【问题标题】:MVC 5 Authorize still allowing access after session expiry会话到期后,MVC 5 Authorize 仍然允许访问
【发布时间】:2016-03-01 19:07:20
【问题描述】:

我有一个新的 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 分钟后)要求用户重新登录?

【问题讨论】:

    标签: authentication asp.net-mvc-5 owin


    【解决方案1】:

    您的应用程序 cookie 由 Identity 会员系统管理。搜索方法 UseCookieAuthentication。您必须设置 ExpireTimeSpan 属性,使其看起来像这样:

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

    【讨论】:

    • 谢谢 - 这解释了它。我已经实施了您的更改,它现在按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2016-07-24
    • 2016-05-06
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多