在ASP.NET MVC中,如果AspNetUserLogins表不记住数据,可以尝试以下解决方法:
确认数据库连接 确保数据库连接字符串正确,并且连接到正确的数据库。可以在Web.config文件中查找连接字符串,并确保它指向正确的数据库。
检查Identity配置 在IdentityConfig.cs文件中,确保正确配置了Identity。特别是确保在配置UserManager时,设置了RememberMe属性为true。
// 设置UserManager
var userManager = new UserManager(new UserStore(context.Get()));
userManager.UserTokenProvider = new DataProtectorTokenProvider(dataProtectionProvider.Create("ASP.NET Identity"));
userManager.UserValidator = new UserValidator(userManager) { AllowOnlyAlphanumericUserNames = false };
userManager.PasswordValidator = new PasswordValidator { RequiredLength = 6 };
userManager.RegisterTwoFactorProvider("PhoneCode", new PhoneNumberTokenProvider { MessageFormat = "Your security code is {0}" });
userManager.RegisterTwoFactorProvider("EmailCode", new EmailTokenProvider { Subject = "Security Code", BodyFormat = "Your security code is {0}" });
userManager.EmailService = new EmailService();
userManager.SmsService = new SmsService();
userManager.UserLockoutEnabledByDefault = true;
userManager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
userManager.MaxFailedAccessAttemptsBeforeLockout = 5;
userManager.RememberMeEnabled = true; // 确保RememberMe属性设置为true
检查登录视图 在登录视图(通常是Login.cshtml)中,确保RememberMe复选框被正确设置,并且有一个name属性为RememberMe的表单字段。
@Html.LabelFor(m => m.RememberMe, new { @class = "control-label col-md-2" })
@Html.CheckBoxFor(m => m.RememberMe)
@Html.ValidationMessageFor(m => m.RememberMe)
检查登录操作 在登录操作(通常是Login方法)中,确保将RememberMe参数正确传递给SignInManager的SignInAsync方法。
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
确保model.RememberMe的值正确传递给SignInAsync方法,以便在登录后记住用户。
通过检查以上几个方面,可以解决AspNetUserLogins表不记住数据的问题。如果问题仍然存在,请检查其他配置和代码,以确保没有其他因素导致此问题。