نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت پنجم - پیاده سازی ورود و خروج از سیستم
در کنار این راه حل که با ایونت‌ها هندل میشه و عنوان کردین، راه زیر هم جهت ریدایرکت به اکشن مد نظر ما، پیشنهاد شده:

[HttpGet]
[Route("signin")]
public async Task SignIn()
{
    if (!User.Identity.IsAuthenticated)
    {
        await HttpContext.ChallengeAsync("oidc", new AuthenticationProperties
        {
            RedirectUri = "/YourController/YourAction",
        });
    }
}
public IActionResult Logout()
{
    return SignOut(new AuthenticationProperties { RedirectUri = "/YourController/YourAction" }, "Cookies", "oidc");
}

نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت دوم - سرویس‌های پایه
در اینترفیس IApplicationRoleManager متدی با امضاء :
 Task<PagedUsersListViewModel> GetPagedApplicationUsersInRoleListAsync
تعریف شده است و همچنین در کلاس ApplicationRoleManager این متد بصورت زیر پیاده سازی شده است :
public async Task<PagedUsersListViewModel> GetPagedApplicationUsersInRoleListAsync
و برنامه خطای زمان کامپایل زیر رو صادر می‌کنه :
does not implement interface member 'IApplicationRoleManager.GetPagedApplicationUsersInRoleListAsync
با توجه به اینکه در بدنه پیاده سازی شده تابع await استفاده شده امکان حذف عبارت async وجود ندارد.این مورد رو چگونه می‌تواند حل کرد؟
نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت سیزدهم- فعالسازی اعتبارسنجی دو مرحله‌ای
- دقیقا در سطر بعد از لاگین (await HttpContext.SignInAsync)؟ خیر. در درخواست بعدی‌است که کوکی آن خوانده شد و سپس مقدار دهی می‌شود.
- در کل ClaimsIdentity.IsAuthenticated وقتی false است که ClaimsIdentity.AuthenticationType مقدار دهی نشده باشد (برای مثال ()new ClaimsIdentity بدون پارامتر سازنده‌ی آن که authenticationType است، تعریف شده باشد) یا می‌تواند مشکل عدم رعایت تقدم و تاخر ثبت میان‌افزارها باشد، یا حتی عدم تعریف اسکیمای مرتبط (AuthenticationScheme) در فایل Startup.
نظرات مطالب
اعمال تزریق وابستگی‌ها به مثال رسمی ASP.NET Identity
وقتی کاربر جدید ثبت میکنیم:
var createResult = this.Create(user, password); 
var result = await _userManager.CreateAsync(user, model.Password).ConfigureAwait(false);
دیگه به تابع  SaveChanges  دسترسی نداریم. unit of work در AccountController استفاده نشده. برای بقیه entity‌ها که خودمون ایجاد کردیم و اینترفیس و سرویس براشون ایجاد کردیم (مثل کلاس EfCategoryService ) برای اون جواب میده؛ چون که در سازنده IUnitOfWork رو دریافت میکنم.
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا
این بخش برای چه منظوری استفاده شده؟ در متد HandleRequirementAsync 
            var request = mvcContext.HttpContext.Request;
            if (request.Method.Equals("post", StringComparison.OrdinalIgnoreCase))
            {
                if (request.IsAjaxRequest() && request.ContentType.Contains("application/json"))
                {
                    var httpRequestInfoService = mvcContext.HttpContext.RequestServices.GetService<IHttpRequestInfoService>();
                    var model = await httpRequestInfoService.DeserializeRequestJsonBodyAsAsync<RoleViewModel>();
                    if (model != null)
                    {

                    }
                }
                else
                {
                    foreach (var item in request.Form)
                    {
                        var formField = item.Key;
                        var formFieldValue = item.Value;
                    }
                }
            }

نظرات مطالب
اعتبارسنجی مبتنی بر کوکی‌ها در ASP.NET Core 2.0 بدون استفاده از سیستم Identity
ممنون. با بررسی‌های که کردم متوجه شدم مشکل از این خط کد هست، ولی نتونستم رفعش کنم. آیا جایی را از قلم انداختم برای پیاده سازی؟ با تشکر
  await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                 cookieClaims,
                new AuthenticationProperties
                {
                    IsPersistent =false, // "Remember Me"
                    IssuedUtc = DateTimeOffset.UtcNow,
                    ExpiresUtc = DateTimeOffset.UtcNow.AddDays(loginCookieExpirationDays)
                });

InvalidOperationException: No IAuthenticationSignInHandler is configured to handle sign in for the scheme: Cookies

نظرات مطالب
بازنویسی سطح دوم کش برای Entity framework 6
این مورد رو هم جداگانه به همراه Automapper تست کردم بدون هیچ مشکلی Cash شد
            var autoCompletesViewModelTest = _hotels.Include(row => row.Profile.City.State.Country).Where(row => row.IsApproved && row.Profile.IsDeleted == false && row.Profile.IsDeactivated == false).Cacheable().ProjectToList<AutoCompleteHotelViewModel>(_mapper.ConfigurationProvider);
اما بعد به صورت زیر استفاده کردم Cash صورت نمی‌پذیرد.
            var autoCompletesViewModel = await _hotels.Include(row => row.Profile.City.State.Country).Where(row => row.IsApproved && row.Profile.IsDeleted == false && row.Profile.IsDeactivated == false).Cacheable().ProjectToListAsync<AutoCompleteHotelViewModel>(_mapper.ConfigurationProvider);

نظرات مطالب
پیاده سازی یک MediaTypeFormatter برای پشتیبانی از MultiPart/form-data در Web API
اشکال این روش این است که در کد قسمت انتهای مقاله:
if (data.Headers.ContentType != null)
{
      // .....
 }  
else
{
     string rawVal = await data.ReadAsStringAsync();
     object val = Convert.ChangeType(rawVal, propType);
     prop.SetValue(modelInstance, val);
}
مقدار دهی مدل در else بعد از خواندن متغیر data در شرط اولیه، انجام نمی‌شود. توضیح علتش هم در این لینک ذکر شده است.
نظرات مطالب
تنظیمات مدت زمان اعتبار کاربران در ASP.NET Identity
«.. اون یکی لاگین میمونه ..»
پس از خروج یکی، لاگین‌های دیگر، با اولین درخواستی که به سرور ارسال می‌کنند، وادار به لاگین مجدد خواهند شد (چون بازه زمانی اعتبارسنجی security stamp موجود در کوکی، با اطلاعات جدید کاربر در سرور، به صفر تنظیم شده‌است). بنابراین این مورد صرفا با به روز رسانی security stamp کاربر در بانک اطلاعاتی عملی می‌شود که باید در حین logoff انجام شود:
await _userManager.UpdateSecurityStampAsync(user.Id);
نظرات مطالب
شروع به کار با EF Core 1.0 - قسمت 11 - بررسی رابطه‌ی Self Referencing
استفاده از second level caching in EF Core برای واکشی Self Referencing در زمان واکشی ToList دوم به درستی عمل نمیکند و Null برگشت میدهد

var menuesFirst = await _publicMenus.Where(p => p.Language == _caltureName).Cacheable().ToListAsync();
var menues = menuesFirst.Where(x => x.MenuId == null).ToList();