0

我有一个 ASP.NET MVC4 网页,在大多数情况下,无需身份验证即可访问。我想保护一个页面以供管理员访问(特别是 ELMAH 的错误日志)。由于我只需要一个管理员登录,我想避免维护用户/密码数据库的复杂性。

我做了一些研究,发现以前版本的 ASP.NET 提供了使用在 web.config 中加密的密码的表单身份验证的能力:

<forms loginUrl="Admin" name=".ASPXFORMSAUTH">
  <credentials passwordFormat="SHA1">
    <user name="admin" password="encryptedPassword" />
  </credentials>
</forms>

然后,身份验证控制器使用FormsAuthentication.AuthenticateFormsAuthentication.RedirectFromLoginPage来验证输入的凭据。但是,我对使用此解决方案犹豫不决,因为:

  1. FormsAuthentication.AuthenticateAPI 现在已过时
  2. FormsAuthentication.RedirectFromLoginPage将直接重定向用户,而不是返回RedirectResult. 这不遵循 MVC 控制器管道,因此单元测试之类的事情会更加困难。

查看 MSDN 示例和默认模板,WebMatrix 的 API 似乎WebSecurity.Login是在 MVC 应用程序中进行表单身份验证的新标准。但是,我还没有找到使用本地(即基于配置)身份验证提供程序的方法。

是否有推荐的方法进行本地身份验证,或者这被认为是一种不好的做法?在不承担外部依赖关系的情况下提供管理员身份验证的最简单方法是什么?

4

1 回答 1

1

WebSecurity.Login不是身份验证的“新标准”。它更像是新的“新手友好标准”。WebSecurity 仅真正支持 SimpleMembership,而且它实际上是为简单的应用程序设计的。

FormsAuthentication.Authenticate很长一段时间以来一直不是一个好的选择,所以现在正式弃用它并不是什么大不了的事。

无论如何,您可能应该使用 Membership,并使用 Membership.ValidateUser 来验证凭据。或者,使用类似 Windows Identity Foundation 的东西。

于 2013-02-20T03:42:07.487 回答