MVC Authenticate依赖什么身份验证?

时间:2014-11-18 17:37:14

标签: c# asp.net asp.net-mvc authorization

我喜欢MVC的安全属性[Authorize]进行授权和身份验证。您可以传入角色或用户名,并使用[AllowAnonymous]对其进行补充。大。

问题是:MVC如何知道我的用户是否已登录,或者他们所处的角色是什么?有没有办法告诉它我是如何进行身份验证的?或者它是否假设我使用的是ASP.NET身份?或其他什么?

我知道有人会说这是一个愚蠢的问题,但说实话,我已经查看了所有文档和其他地方的内容,而这一点并没有明确说明。

3 个答案:

答案 0 :(得分:1)

MVC安全性与实际的安全实现松散耦合。这意味着,如果您使用Windows身份验证(基于Windows用户),表单身份验证(基于cookie)或其他一些身份验证,那么这无关紧要。

如果您查看source code for AuthorizeAttribute,您可以看到它所做的就是检查IIdentity.IsAuthenticated property是否为真以确定用户是否已登录,并检查IPrincipal接口以进行检查用户和/或角色。

简而言之,安全机制的唯一要求是它实现IPrincipal和IIdentity并在Application_BeginRequest event(无状态安全性)或Application_AcquireRequestState event中设置这些接口(如果使用会话) Global.asax中的安全状态。

答案 1 :(得分:1)

最初发布此评论,但似乎是答案:

默认使用Membership类。身份验证模式在Web.Config中定义,标签是&#34;身份验证&#34;在<system.web>部分。

答案 2 :(得分:0)

在ASP.NET中,通常将ASPX页面放在一个自定义 web.config 文件控制下的文件夹中,该文件将未经身份验证的用户重定向到预定义的登录页面。