【问题标题】:MVC - User still authenticated after cookie expiresMVC - cookie 过期后用户仍然经过身份验证
【发布时间】:2014-02-14 00:43:30
【问题描述】:

我已经设置了我的第一个登录系统并遵循了:

https://stackoverflow.com/a/10524305

无需多次访问数据库即可存储一些额外的数据。

我遇到的问题是,当 cookie/票证过期时,仍然可以看到用户已通过身份验证?

例如:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

authCookie 为空,但是

HttpContext.Current.User.Identity.IsAuthenticated 

继续返回true。

如果cookie过期,有没有办法强制注销?

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc authentication cookies asp.net-identity


    【解决方案1】:

    你可以尝试替换

    HttpContext.Current.User.Identity.IsAuthenticated

    HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
    if(authTicket.Expired) (...)
    

    但这并不能解释为什么 HttpContext.Current.User.Identity.IsAuthenticated 仍然设置为 true。 我首先要确保我的表单身份验证和会话过期在配置文件中设置为相同的值:

    <authentication mode="Forms">
    
    <forms cookieless="UseCookies"
                 //some configuration + 
                 timeout="20">
    
    </forms>
    
    </authentication>
    
    <sessionState mode="InProc" cookieless="false" timeout="20" />
    

    【讨论】:

    • 认为 iv 解决了它,有两个单独的 cookie。一个用于登录用户,一个用于额外数据。我设置了一个到期日,但另一个没有。
    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2020-01-07
    • 2019-03-22
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多