.NET MVC 2.0中的多种授权类型

时间:2010-08-06 13:53:10

标签: c# asp.net-mvc

我想在.NET MVC 2.0应用程序中允许两种类型的授权。一个是好的旧式ID /密码(表单身份验证),但我也希望能够查看请求页面的标头以获取ID /密码。如果提供了,我想基于此授权,通过表单身份验证并允许用户进入系统。在MVC中这样做的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

不要认为这种类型的身份验证有任何开箱即用的东西。您可以只读取请求标头并检查它们是否包含您需要的登录信息,如果有,只需进行表单身份验证,但使用请求标头中的登录信息,例如

string userId = String.Empty;
string password = String.Empty; 
foreach (var key in Request.Headers.AllKeys)
{
    if (key == "UserId")
        userId = Request.Headers[key];
    if (password == "Password")
        password = Request.Headers[password];
}

if (!String.IsNullOrEmpty(userId) && !String.IsNullOrEmpty(password))
    // attempt login
else
    // display login page

答案 1 :(得分:0)

您可以在global.asax中挂钩身份验证请求,也可以编写自定义HTTPModule。 HTTPModule特别擅长挂钩ASP.NET管道中的所有事件,包括身份验证。

然而,使用它进行基于标题内容的身份验证似乎风险很高,因此知道伪造标题是多么容易。