MVC 身份验证依赖于什么身份验证

本文关键字:身份验证 什么 依赖于 MVC | 更新日期: 2023-09-27 18:30:45

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

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

我知道有人会说这是一个愚蠢的问题,但老实说,我已经查看了文档和其他任何地方,只是没有指定。

MVC 身份验证依赖于什么身份验证

MVC安全性与实际的安全实现松散耦合。这意味着,如果您使用的是 Windows 身份验证(基于 Windows 用户)、Forms 身份验证(基于 cookie)还是其他一些身份验证,这实际上并不重要。

如果您查看 AuthorizeAttribute 的源代码,您会发现它所做的只是检查 IIdentity.IsAuthenticated 属性是否为 true 以确定用户是否已登录,并且还检查 IPrincipal 接口以检查用户和/或角色。

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

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

默认情况下,使用成员资格类。身份验证模式在 Web.Config 中定义,标记在<system.web>部分中是"身份验证"。

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

相关文章: