2017-05-29 157 views
1

我有一个aspnet核心网站,使用cookie身份验证。 当我注销时,然后当我点击浏览器的后退按钮时,我导航到最后一个网页,我不想要那个,我不想让用户重定向到登录页面再次验证。如何在注销后防止浏览器后退按钮Aspnet Core

我startup.cs

public void ConfigureServices(IServiceCollection services) 
     { 
      .... 
      services.AddIdentity<ApplicationUser, ApplicationRole>(
      config => 
      { 
       config.User.RequireUniqueEmail = true; 
       config.SignIn.RequireConfirmedEmail = true; 
       config.Password.RequiredLength = 8; 
       config.Cookies.ApplicationCookie.LoginPath = "/Home/Login"; 
      }) 
      .AddEntityFrameworkStores<DbContext>() 
      .AddDefaultTokenProviders(); 
     ...... 
     } 

我controller.cs

public class HomeController : Controller 
    { 
     ..... 
     private readonly string _externalCookieScheme; 
     .... 


     public HomeController(
      ..... 
      IOptions<IdentityCookieOptions> identityCookieOptions, 
      .....) 
     { 
      .... 
      _externalCookieScheme = identityCookieOptions.Value.ExternalCookieAuthenticationScheme; 
      .... 

     } 




     [HttpGet] 
     [AllowAnonymous] 
     public async Task<IActionResult> Login() 
     { 
      // Clear the existing external cookie to ensure a clean login process 
      await HttpContext.Authentication.SignOutAsync(_externalCookieScheme); 
      return View(); 
     } 

     [HttpPost] 
     [ValidateAntiForgeryToken] 
     public async Task<IActionResult> LogOff() 
     { 
      await HttpContext.Authentication.SignOutAsync(_externalCookieScheme); //don´t remove the cookie 
      _logger.LogInformation(4, "User logged out."); 
      return RedirectToAction(nameof(HomeController.Login), "Home"); 
     }  
} 

我是缺少在这里?

此致敬礼。

jolynice

回答

2

您需要设置Cache-Control标头。对于单个页面或控制器,您可以像这样设置标题:

[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)] 

如果这样不起作用,请确保标题未被覆盖。你可以在我的博客文章中找到详细的解释:How To Prevent the Back Button after Logout in ASP.NET Core MVC

+2

请注意,如果您想宣传自己的产品/博客,您必须披露您的关联**,否则您的答案可能被标记为垃圾邮件。请阅读[如何不成为垃圾邮件发送者](https://stackoverflow.com/help/promotion) – DavidPostill

+0

感谢您的信息。我已经更新了答案。 – OpenIDAuthority

+0

OpenIdAuthority,感谢您的帮助。现在正在工作。 – jolynice