在ASP.NET Core中,可以通过配置身份验证cookie的过期时间来解决cookie不会过期的问题。以下是一个示例代码:
首先,在Startup.cs文件的ConfigureServices方法中,添加以下代码来配置身份验证和设置cookie的过期时间:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "MyCookie";
options.Cookie.Expiration = TimeSpan.FromMinutes(30); // 设置cookie的过期时间为30分钟
options.Cookie.SameSite = SameSiteMode.Strict;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // 仅在HTTPS连接下使用cookie
options.LoginPath = "/Account/Login"; // 登录页面的路径
options.LogoutPath = "/Account/Logout"; // 注销页面的路径
});
// 其他服务的配置...
}
接下来,在Configure方法中,添加以下代码来启用身份验证:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 其他中间件的配置...
app.UseAuthentication();
app.UseAuthorization();
// 其他中间件的配置...
}
最后,在需要进行身份验证的Controller或者Action上添加[Authorize]特性,以确保只有经过身份验证的用户才能访问:
[Authorize]
public class HomeController : Controller
{
// 控制器的代码...
}
通过以上配置,身份验证cookie将在指定的过期时间后过期,用户需要重新登录才能继续访问受保护的页面。