8

我对这个框架完全陌生,我仍在学习它和 C# 的基础知识。同时,我在阅读书籍时遇到了AuthorizeAllowAnonymous属性,我无法理解控制器如何“知道”尝试访问这些方法/操作的用户是否经过身份验证。这些信息存储在哪里?执行登录方法时需要特殊处理吗?

谢谢你的帮助。

4

1 回答 1

19

假设您在应用程序中进行了某种身份验证设置(表单身份验证、Windows 身份验证或 OAuth),登录用户在其浏览器中以 cookie 的形式存储了一个令牌。当用户浏览您的应用程序时,他们的令牌将与他们一起传递。当 Authorize 属性应用于您的控制器方法之一时,您的应用程序会检查他们的令牌,如果他们是具有正确权限的经过身份验证的用户,则允许他们进入,否则会将他们重定向到您指定的操作。默认重定向到注册/登录页面。AllowAnonymous 允许未经身份验证的用户访问操作或控制器。

简而言之,它根据从客户端接收到的令牌知道。

至于第二个问题,如果您在制作 MVC 4 项目时选择了“互联网应用程序”,则为您内置了表单身份验证,您无需执行任何操作,只需使用生成的登录操作。如果您希望使用生成代码生成的数据库以外的数据库,则需要实现 MembershipProvider 和 MembershipUser。

于 2013-09-27T17:16:16.113 回答