نظرات مطالب
احراز هویت و اعتبارسنجی کاربران در برنامه‌های Angular - قسمت دوم - سرویس اعتبارسنجی
- سازنده‌ی کلاس سرویس Auth هست که کار اطلاع رسانی به کامپوننت هدر را انجام می‌دهد. علت قرار گرفتن این قطعه کد، در هدر هم دقیقا اجرای آن با ریفرش صفحه است. بنابراین این قسمت و همچنین مشترکین به BehaviorSubject آن‌را بررسی کنید:
 constructor() {
    this.updateStatusOnPageRefresh();
  }
- اگر با وجود مقادیر token در کش مرورگر، این مقادیر کار نمی‌کنند، نیاز به پیاده سازی «نکته‌ی مهم: نیاز به دائمی کردن کلیدهای رمزنگاری سمت سرور» را دارید. ری استارت برنامه = تولید کلیدهای رمزنگاری جدید = غیرمعتبر شدن اطلاعات سمت کاربر و برگشت خوردن آن‌ها در سمت سرور
نظرات مطالب
ASP.NET MVC #8
من برای تمرین helper تگ img رو بصورت زیر پیاده سازی کردم :
 public static MvcHtmlString MyImage2(this HtmlHelper helper, string src, string alt, int width, int height)
  {
var img=new TagBuilder("img");
img.MergeAttribute("src", VirtualPathUtility.ToAbsolute(src));
img.MergeAttribute("alt", alt);
img.MergeAttribute("width", width.ToString());
img.MergeAttribute("height", height.ToString());
return MvcHtmlString.Create(img.ToString());
  }

آیا استفاده از VirtualPathUtility.ToAbsolute(src) برای بدست آوردن آدرس تصویر که در پوشه content قرار دارد روش درستی است ؟
من جواب گرفتم .ولی می‌خواستم بدون آیا میشه بهتر از این عمل کرد در کلاس helper
نظرات مطالب
اعمال تزریق وابستگی‌ها به مثال رسمی ASP.NET Identity
از Claim‌ها کمک بگیرید (در نهایت در کوکی کاربر ذخیره خواهند شد ) :
 public async Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUser applicationUser)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await CreateIdentityAsync(applicationUser, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
           userIdentity.AddClaim(new Claim("Avatar",applicationUser.Avatar));
            return userIdentity;
        }
متد AddClaim برای کلاس ClaimsIdentity در نظر گرفته شده است.
یا حتی میتوانید یک ClaimsIdentityFactory شخصی سازی شده در نظر بگیرید؛ برای مثال در پروژه " طراحی فریمورک برای کار با Asp.net MVC و EF به صورت NTier  یک نمونه پیاده سازی شده را میتوانید مشاهده کنید.
نظرات مطالب
MVC Scaffolding #2
- لینک مطلب «پیاده سازی generic repository یک ضد الگو است » را براشون ارسال کنید تا مطالعه کنند.
- در متن عنوان شده « ModelType: برای ذکر صریح کلاس مورد استفاده در تشکیل کنترلر بکار می‌رود. اگر ذکر نشود، از نام کنترلر حدس زده خواهد شد.» ModelType دقیقا مانند نحوه مقدار دهی نوع مدل در صفحه دیالوگ استاندارد اضافه کردن یک View در VS.NET مقدار دهی می‌شود؛ یک fully qualified name است. با این شرط که اسمبلی مربوطه به پروژه اصلی ارجاع دارد و یکبار هم کل پروژه Build شده.
نظرات مطالب
Globalization در ASP.NET MVC
ببخشید یه چند وقتی فعال نبودم و پاسخ این سوال رو دیر دارم میدم.
امکان استفاده از کلیدهای Resource برای مقداردهی خواص سمت سرور کنترلها در صفحات aspx به صورت مستقیم وجود ندارد. بنابراین برای استفاده از این کلیدها همانند روش پیش فرض موجود در ASP.NET باید از یکسری ExpressionBuilder استفاده شود که کار Parse عبارت وارده برای این خواص را در سمت سرور انجام میدهد. کلاس پیش فرض برای اینکار در ASP.NET Web Form که از پیشوند Resources استفاده میکند تنها برای Resource‌های محلی (Local) موجود در فولدرهای پیش فرض (App_GlobalResources و App_LocalResources) کاربرد دارد و برای استفاده از Resourceهای موجود در منابع ریفرنس داده شده به پروژه باید از روشی مثل اونچه که خود شما لینکش رو دادین استفاده کرد.
من این روش رو استفاده کردم و پیاده سازی موفقی داشتم. نمیدونم مشکل شما چیه...
نظرات مطالب
مروری بر کاربردهای Action و Func - قسمت اول
طراحی IComparable مربوط به زمان دات نت یک است. اگر آن زمان امکانات زبان مثل امروز بود، می‌شد از طراحی ساده‌تری استفاده کرد.
یک نمونه از طراحی‌های اخیر تیم دات نت رو میشه در WebGrid دید. در این طراحی برای نمونه جهت دریافت فرمول فرمت کردن مقدار یک cell، از Func استفاده کردن. می‌شد این رو با اینترفیس هم نوشت (چون قرار است کاری به خارج از کلاس محول شود و هر بار اطلاعاتی به آن ارسال و نتیجه‌ای جدید اخذ گردد؛ پیاده سازی آن با شما، نتیجه را فقط در اختیار WebGrid ما قرار دهید). اما جدا استفاده از آن تبدیل می‌شد به عذاب برای کاربر که به نحو زیبایی با Func و امکانات جدید زبان حل شده.
راهنماهای پروژه‌ها
رمزنگاری و رمزگشایی اطلاعات توسط الگوریتم RSA
یکی از نیازهای امنیتی پروژه‌های نرم افزاری رمزنگاری و رمزگشایی اطلاعات است. برای این منظور شما می‌توانید از دو متد الحاقی زیر استفاده کنید.

رمزنگاری با متد Encrypt:
string secret = "My Secret";
string encoded = secret.Encrypt("mykey");
رمزگشایی با متد Decrypt:
string secret = "My Secret";
string decoded = encoded.Decrypt("mykey");
دو متد فوق به نوع داده String الحاق شده اند و پیاده سازی آنها در کلاس SecurityExtensions موجود است. جهت انتخاب کلید می‌توانید از ترکیب شناسه کاربری فرد، تاریخ و زمان ایجاد رکورد به همراه یک کلید خصوصی استفاده کنید. در این روش رمزگشایی اطلاعات بدون داشتن کلید امنیتی میسر نخواهد بود.
راهنماهای پروژه‌ها
جایگزینی حروف عربی با متد الحاقی ToPersianContent
متد ToPersianContent جهت جایگزینی حروف (ی، ک، ه) عربی با معادل صحیح فارسی آنها توسعه یافته است. نحوه استفاده از آن بصورت زیر است:
var persianContent = textBox1.ToPersianContent();
همچنین در صورتی که نیاز به دریافت یک رشته اصلاح شده با اعداد فارسی باشد، می‌توان از امضای دوم این متد بصورت زیر استفاده کرد:
var persianContent = textBox1.ToPersianContent(true);
این متدها همراه با متد GetPersianNumbers در کلاس PersianExtensions پیاده سازی شده اند. وظیفه متد GetPersianNumbers برگرداندن رشته‌ی دریافتی پس از جایگزینی اعداد لاتین بصورت فارسی است که نحوه استفاده از آن را مشاهده می‌کنید:
var numbers = "1392".GetPersianNumbers(); // return ۱۳۹۲


بازخوردهای پروژه‌ها
AuditLogs
سلام،
وقتی تابع OnActionExecuted در کلاس Decision.Web.Filters.AuditAttribute رو از حالت کامنت خارج می‌کنم 
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (LogType == AuditLogType.Login)
            {
                AuditLogService.Create(Description, LogType);
            }
            if (LogType != AuditLogType.Serialize) return;
            if (filterContext.Controller.ViewData.ModelState.IsValid)
            {
                AuditLogService.Create(Description, LogType);
            }

            base.OnActionExecuted(filterContext);
        }

موقع login با خطای زیر مواجه می‌شوم؛
البته مشخص است که وقتی هنوز login نشده ایم پس current user هم نداریم! 
 
- این بخش به طور کامل پیاده سازی نشده است؛
این فیلتر (Decision.Web.Filters.AuditAttribute ) برای اکشن‌های زیادی استفاده شده است البته فقط  Description  یا عنوان لاگ در database ذخیره می‌شود و oldvalue و NewValue مقداری ندارند.
این بخش را چطور می‌توان کامل کرد؟  

نظرات اشتراک‌ها
نقدی بر سامانۀ اتوماسیون اداری همکاران سیستم و نامۀ جوابیۀ شرکت
هرچند که هیچوقت نظر مثبتی در مورد سیستمهای همکاران سیستم نداشته ام اما با نظر شما در مورد این نقد موافقم. جمله "انگار سیستم بر اساس بی اعتمادی بین مدیران و کارشناسان طراحی شده است." در مورد مکانیزم دقیق جلوگیری از خطای کاربران و سطوح‌های مختلف کاربران نشان از یک نقد غیر کارشناسانه داشته باشد. در مورد وابستگی به برنامه‌های دیگر هم تقریبا همه سیستمهای اتوماسیون به برنامه هایی مانند Word و Acrobat و ... وابستگی دارند
در مورد باقی ماندن سرورهای قدیمی بعد از عملیات Convert هم باید عرض کنم که این یک اصله و یک باید. اگر سازمانی خلاف این عمل کند اشتباه کرده است. همیشه برای اطمینان از عملکرد صحیح و بررسی داده‌های انتقال داده شده مدتی سیستمهای قدیمی سرپا نگهداشته میشن.
و اما در جواب جمله "و نهایتا اینکه سیستم با اعتراض‌های مختلف کاربران در حال پیاده سازی می‌باشد." متاسفانه این واکنش طبیعی کارمندان ایرانی به تغییرات همیشگی است و باید اینو خدمت شما عرض کنم که بر خلاف دلیل اصلی نوشتن این مقاله که تنبلی شرکتهای قدیمی و بزرگ است در ایران مشکل اصلی تنبلی کاربران (بخوانید کارمندان) شرکتهاست که به خاطر این تنبلی در برابر تغییرات مقاومت می‌کنن. نمونه همین مقاومتها را در بسیاری از شرکتهای ایرانی دیده ام و گاها حتی باعث کندی فرایند مهاجرت به سیستم جدید و یا حتی ممانعت از سیستم جدید شده اند.