【问题标题】:What authentication does MVC Authenticate rely on?MVC Authenticate 依赖什么身份验证?
【发布时间】:2014-11-18 17:37:14
【问题描述】:

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

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

我知道有人会说这是一个愚蠢的问题,但老实说,我查看了所有文档和其他任何地方,但没有具体说明。

【问题讨论】:

  • 默认使用 Membership 类。 Web.Config 中定义了身份验证模式, 部分中的标记为“authentication”。
  • 谢谢。您应该将其发布为答案。
  • 好的,我将其作为答案进行宣传,如果您愿意,可以将其标记为。

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


【解决方案1】:

MVC 安全与实际的安全实现松散耦合。这意味着,无论您使用的是 Windows 身份验证(基于 Windows 用户)、Forms 身份验证(基于 cookie)还是其他一些身份验证方式,都无关紧要。

如果你看一下source code for AuthorizeAttribute你可以看到它所做的只是检查IIdentity.IsAuthenticated property是否为真以确定用户是否登录,并且还检查IPrincipal接口以检查用户和/或角色。

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

【讨论】:

  • 感谢您提供所有这些信息,这也很有帮助。不幸的是,我只能接受一个答案作为“the”答案,但您和 user1666620 都对这个答案很有帮助。
  • 我在 Global.asax 的 Application_AcquireRequestState 中设置我的接口等于什么?我的自定义 User 类继承了这些接口。
【解决方案2】:

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

默认使用 Membership 类。认证方式在Web.Config中定义,标签为<system.web>部分中的“authentication”。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多