【问题标题】:How do the AuthorizeFilter and Authentication methods work under the hood?AuthorizeFilter 和 Authentication 方法如何在幕后工作?
【发布时间】:2014-01-20 10:40:00
【问题描述】:

我想简要了解一下授权过滤器和 FormAuthentication.SetAuthCookie 是如何在后台工作的。这是我在阅读了一些有关该语言的书籍后唯一觉得模棱两可的地方。

我不明白授权过滤器如何知道在哪里查找。那么 FormsAuthenticationTicket VS FormAuthentication 呢? cookie 是最安全的方式吗?我的意思是我确信可以从浏览器中导出 cookie 并在其他地方使用它......?

【问题讨论】:

    标签: asp.net-mvc forms-authentication authorize


    【解决方案1】:

    您可能会发现此question 很有帮助。

    如果您对授权过滤器的工作原理感兴趣,可以查看源代码:AuthorizeAttribute

    简单地说,Authorize 过滤器将通过检查 HttpContext.User.Identity.IsAuthenticated 属性来检查用户是否已通过身份验证。在表单身份验证的情况下,User 属性将由 FormsAuthenticationModule 设置。

    FormsAuthentication.SetAuthCookie 方法为经过身份验证的用户创建票证(假设用户提供了正确的凭据)并将其添加到响应的 cookie 集合中。或者,如果您愿意,可以将模块配置为使用无 cookie 身份验证,但加密票证仍随每个 HTTP 请求一起发送。无论哪种方式,客户端(浏览器)都需要一种方式告诉服务器请求已通过身份验证。

    关于您对安全性的担忧,this 问题中有一些想法。

    【讨论】:

    • 感谢您的总结和所有参考。那么 FormsAuthenticationTicket 呢?在我正在工作的项目中,我看到了这个而不是 FormAuthentication。然而,在我的书中,我什么也没看到。有什么想法吗 ?再次感谢。
    • FormsAuthenticationTicket 是一个对象,其中包含 FormsAuthenticationModule 用来识别用户的值。基本上它包含解密的身份验证值,例如用户名和有关身份验证 cookie 的详细信息。
    猜你喜欢
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2022-07-07
    • 2020-01-23
    • 2015-05-18
    • 2014-11-18
    相关资源
    最近更新 更多