登录和注销后,MVC 6中的后退按钮问题

时间:2016-04-25 10:34:04

标签: asp.net-core asp.net-core-mvc asp.net-identity-3

我试图限制用户在登录/注销到应用程序后单击后退按钮。

如果用户登录到应用程序,则单击后退按钮后不应显示登录视图,如果用户从应用程序注销,则不应显示单击后退按钮LogOff视图。

我已经使用了链接数量给出的缓存技术,但似乎不起作用。

CacheAfterLogout链接完全按原样完成,仍然无法解决问题。我正在使用asp.net身份框架。

有人可以为此提供帮助吗?

4 个答案:

答案 0 :(得分:3)

要禁用缓存,您可以将以下内容应用于您希望在

上禁用缓存的每个控制器
[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]

您还可以设置named cache profiles并在运行时配置设置。

答案 1 :(得分:0)

可以通过在要禁用缓存的每个控制器上应用 [ResponseCache(Location = ResponseCacheLocation.None,NoStore = true)] 来禁用缓存。

通过在使用ASP.Net Core 1.0 .- *和MVC6配置MVC服务的同时在startup.cs中添加自定义过滤器,可以全局应用于所有控制器。

首先创建一个实现ResponseCacheAttribute的自定义缓存过滤器,如下所示

public class ResponseCacheFilter : ResponseCacheAttribute
{
    public ResponseCacheFilter() : base()
    {
        Location = ResponseCacheLocation.None;
        NoStore = true;
    }
}

这应该在startup.cs文件中添加如下。

public void ConfigureServices(IServiceCollection services)
{
   // Add framework and custom services.
   services.AddMvc(config =>
     {
         config.Filters.Add(new ResponseCacheFilter());
     });
}

https://docs.asp.net/en/latest/performance/caching/response.html#responsecache-attribute

查看ResponseCache的配置

答案 2 :(得分:-1)

只需在Global.asax.cs中添加此代码

protected void Application_BeginRequest()
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
        Response.Cache.SetNoStore();
    }

答案 3 :(得分:-3)

只需将这些行添加到 Global.asax.cs 文件中即可。

protected void Application_BeginRequest()
        {
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
            Response.Cache.SetNoStore();
        }