من Identity 2 استفاده کردم و دربخش Login هم گزینه مروبط remember me رو فعال کردم :
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
و در قسمت Startup.Auth.cs هم مدت کوکی رو 7 روز قرار دادم :
using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin; using Microsoft.Owin; using Microsoft.Owin.Security.Cookies; using IdentitySample.Models; using Owin; using System; namespace IdentitySample { public partial class Startup { public void ConfigureAuth(IAppBuilder app) { app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create); app.UseCookieAuthentication(new CookieAuthenticationOptions { ExpireTimeSpan = TimeSpan.FromDays(7), AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(180), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
و وقتی سایت رو localhost هست بخوبی کار میکنه یعنی وقتی موقع ورود به سایت تیک گزینه remember me رو میزنم وظعیت لاگین بودنم باقی میمونه وحتی اگه مرورگر رو ببندم و دوباره بازکنم همچنان لاگین میمونه .
ولی درحالتی که سایت روی هاست آنلاین هست بعد از ورود به سایت اگه تیک گزینه remember me رو هم بزنم نهایتا بعد از 5 دقیقه Logout میشم و این خیلی عجیبه !!
علت این مورد چیه و چطور میتونم حلش کنم ؟
با توجه به اینکه میدونم Identitiy 2 از کوکی بر ذخیره اطلاعات لاگین بودن کاربر استفاده میکنه , پس احتمالا هاست نمیتونه در این مورد تاثیر گذار باشه ,
بنظرتون بخاطر نداشتن SSL ممکنه خود مرورگر کوکی ها هر 5 دقیه به 5 دقیقه منقضی بکنه .برای امنیت. این جز استاندارد های امنیتی همه مرورگر ها نیست ؟
من این مشکل رو در ThemeShop داشتم با مقاله زیر حل شد
دم شما گرم استاد حل شد
یه سوال دیگه هم بپرسم :
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
کاربرد این
shouldLockout: false
چیه ؟
این گزینه ، اگر کاربر چند بار تلاش کنه برای ورود و موفق نباشه اکانتش رو قفل میکنه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)