我在我的网站中使用 dotnet core 5 和 Identity 进行授权。我有一个自定义课程User
为了我的身份。
这是我的配置服务:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), o => o.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery)));
services.AddDefaultIdentity<User>(e =>
{
e.Password.RequireDigit = false;
e.Password.RequireLowercase = false;
e.Password.RequireNonAlphanumeric = false;
e.Password.RequireUppercase = false;
e.Password.RequireLowercase = false;
e.Password.RequiredUniqueChars = 2;
e.Password.RequiredLength = 5;
e.SignIn.RequireConfirmedPhoneNumber = false;
e.SignIn.RequireConfirmedEmail = false;
}).AddRoles<IdentityRole>().AddRoleManager<RoleManager<IdentityRole>>()
.AddDefaultTokenProviders().AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
在我的配置中我有:
app.UseAuthentication();
app.UseAuthorization();
这是我的登录控制器:
[ValidateAntiForgeryToken]
[HttpPost("/Login")]
public async Task<IActionResult> Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
var result =
await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, true);
if (result.Succeeded)
{
return Redirect(model.ReturnUrl);
}
else
{
ModelState.AddModelError("", "Invalid Usename or password");
return View();
}
}
else
{
return View();
}
}
但即使Model.RememberMe
为 true 时,登录不是持久的,用户需要每 20 分钟登录一次。
我怎么解决这个问题?
尝试设置ExpireTimeSpan
cookie.以下是将过期时间设置为 1 天的示例:
services.ConfigureApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(1);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)