2010-08-06 52 views
0

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

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

但是,使用这种基于标头内容的认证似乎是非常高的风险,知道伪造标头是多么容易。