如果ASP.NET Core 2.2 Razor页面登录不持久,即用户必须在很短的时间内重新登录,可能是由于Cookie的过期时间设置不正确导致的。以下是一个可能的解决方法示例:
public void ConfigureServices(IServiceCollection services)
{
// 其他服务配置
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "YourAuthCookieName";
options.ExpireTimeSpan = TimeSpan.FromMinutes(30); // 设置Cookie过期时间
options.SlidingExpiration = true; // 启用滑动过期时间
});
// 其他服务配置
}
SignInAsync方法来设置用户的身份验证Cookie:public async Task Login(LoginModel model)
{
// 验证用户凭证
// 验证通过后设置用户Cookie
var claims = new List
{
new Claim(ClaimTypes.Name, model.Username)
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
// 其他操作
return RedirectToAction("Index", "Home");
}
通过上述配置和代码示例,ASP.NET Core 2.2 Razor页面的登录应该会持久,用户不需要频繁重新登录。请根据你的实际需求,调整Cookie的过期时间和其他相关配置。