我对这个框架是全新的,我仍在学习它和C#的基础知识。同时,我在阅读书籍时遇到了授权和 AllowAnonymous 这些属性,我无法理解控制器如何“知道”用户是否尝试访问这些方法/操作是否经过身份验证。该信息存储在哪里?在执行登录方法时是否需要进行特殊处理?
感谢您的帮助。
答案 0 :(得分:18)
假设您的应用程序中有某种身份验证设置(表单身份验证,Windows身份验证或OAuth),登录用户会以cookie的形式在其浏览器中存储令牌。当用户导航您的应用程序时,他们的令牌会随之传递。当Authorize属性应用于您的某个控制器方法时,您的应用程序会检查其令牌,如果它们是具有正确权限的经过身份验证的用户,则允许它们进入,如果不是,则会将它们重定向到您指定的操作。默认重定向是注册/登录页面。 AllowAnonymous允许未经过身份验证的用户访问操作或控制器。
简而言之,它基于从客户端收到的令牌知道。
至于第二个问题,如果您在制作MVC 4项目时选择了“互联网应用程序”,则会为您构建表单身份验证,除了使用生成的登录操作之外,您无需执行任何操作。如果您希望使用生成的代码之外的数据库,则需要实现MembershipProvider和MembershipUser。