MVC 5授权在会话过期后仍然允许访问

MVC 5 Authorize still allowing access after session expiry

我有一个新的 MVC 5 项目,它遵循这里最基本的 OWIN 示例: http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux

然后我将 [Authorize] 属性应用到除我的登录控制器之外的所有控制器。当我第一次启动该网站时,我需要登录,并且在登录之前我无法访问任何其他控制器 - 到目前为止非常好。

我已将会话时长缩短为 1 分钟,如下所示:

<system.web>
  <sessionState timeout="1" />
</system.web>

现在当我登录时,我等待 1 分钟,然后应用程序点击以下行:

protected void Session_End(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Session_End");
}

然而,在此之后,我仍然可以导航到我想要的任何控制器。我的会话变量都是空的,但系统仍然认为我是授权用户。

我做错了什么?我怎样才能做到当会话到期时(1 分钟后),用户需要重新登录?

您的应用程序 cookie 由身份会员系统管理。搜索方法 UseCookieAuthentication。您必须设置 ExpireTimeSpan 属性 所以它看起来像这样:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
     LoginPath = new PathString("/Account/Login"),
     ExpireTimeSpan = TimeSpan.FromMinutes(1),

...