在ASP.NET Core 6 MVC Web应用程序中,无法退出登录可能是由于未正确实现注销功能引起的。以下是一种解决方法,包括代码示例:
步骤1:在Startup.cs文件中配置身份验证和授权服务。
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "YourCookieName";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.LoginPath = new PathString("/Account/Login");
options.LogoutPath = new PathString("/Account/Logout");
options.AccessDeniedPath = new PathString("/Account/AccessDenied");
options.SlidingExpiration = true;
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
});
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
app.UseAuthentication();
app.UseAuthorization();
// ...
}
}
步骤2:在AccountController中实现注销功能。
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Mvc;
public class AccountController : Controller
{
public async Task Logout()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Index", "Home");
}
}
以上示例中,我们配置了Cookie身份验证,并在AccountController中实现了Logout方法,该方法使用HttpContext.SignOutAsync方法来注销用户。注销后,重定向到首页或其他需要的页面。
请注意,以上示例是一种可能的解决方法,您可能需要根据您的具体应用程序需求进行适当的调整。