Asp.net mvc 授权过滤器和身份验证方法是如何工作的?

Asp.net mvc 授权过滤器和身份验证方法是如何工作的?,asp.net-mvc,forms-authentication,authorize,Asp.net Mvc,Forms Authentication,Authorize,我想简单地了解一下authorize过滤器和FormAuthentication.SetAuthCookie是如何在后台工作的。这是我读了一些关于语言的书后发现的唯一模棱两可的地方 我不明白授权过滤器怎么知道去哪里找。那么FormsAuthenticationTicket和FormAuthentication呢?cookie是最安全的方法吗?我的意思是,我确信可以从浏览器导出cookie并在其他地方使用它。您可能会发现这很有帮助 如果您对授权过滤器的工作原理感兴趣,可以查看源代码: 简而言之,A

我想简单地了解一下authorize过滤器和FormAuthentication.SetAuthCookie是如何在后台工作的。这是我读了一些关于语言的书后发现的唯一模棱两可的地方

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

您可能会发现这很有帮助

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

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

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


关于您对安全性的担忧,有一些想法值得商榷。

谢谢您的总结和所有参考资料。那么FormsAuthenticationTicket呢?在我正在工作的项目中,我看到了这一点,而不是形式验证。然而,在我的书中,我什么也没看到。有什么想法吗?再次感谢。FormsAuthenticationTicket是一个包含FormsAuthenticationModule用于标识用户的值的对象。基本上,它包含解密的身份验证值,例如用户名和有关身份验证cookie的详细信息。