我有一个 ASP.NET MVC4 网页,在大多数情况下,无需身份验证即可访问。我想保护一个页面以供管理员访问(特别是 ELMAH 的错误日志)。由于我只需要一个管理员登录,我想避免维护用户/密码数据库的复杂性。
我做了一些研究,发现以前版本的 ASP.NET 提供了使用在 web.config 中加密的密码的表单身份验证的能力:
<forms loginUrl="Admin" name=".ASPXFORMSAUTH">
<credentials passwordFormat="SHA1">
<user name="admin" password="encryptedPassword" />
</credentials>
</forms>
然后,身份验证控制器使用FormsAuthentication.Authenticate
和FormsAuthentication.RedirectFromLoginPage
来验证输入的凭据。但是,我对使用此解决方案犹豫不决,因为:
- 该
FormsAuthentication.Authenticate
API 现在已过时。 FormsAuthentication.RedirectFromLoginPage
将直接重定向用户,而不是返回RedirectResult
. 这不遵循 MVC 控制器管道,因此单元测试之类的事情会更加困难。
查看 MSDN 示例和默认模板,WebMatrix 的 API 似乎WebSecurity.Login
是在 MVC 应用程序中进行表单身份验证的新标准。但是,我还没有找到使用本地(即基于配置)身份验证提供程序的方法。
是否有推荐的方法进行本地身份验证,或者这被认为是一种不好的做法?在不承担外部依赖关系的情况下提供管理员身份验证的最简单方法是什么?