繁体   English   中英

在MVC 2中验证REST请求

[英]Authenticating REST requests in MVC 2

嗨,在过去的几个小时里,我试图让我了解可以通过asp.net MVC提供服务的RESTful服务。 身份验证仍然是我在互连网上发现的所有那些教程和指南中似乎未涵盖的内容。

当前,我们在现有的MVC应用程序中使用基于表单的身份验证。 据我了解,我们需要添加基本HTTP身份验证,以便能够处理REST请求和连接到用户上下文的用户权限。 有没有办法在一个应用程序中“混合”这两种身份验证模式?

我不确定是否内置任何内容,但是您可以编写自己的内容。 就像是:

var authHeader = Request.ServerVariables["HTTP_AUTHORIZATION"];
if (authHeader.StartsWith("Basic ", StringComparison.InvariantCultureIgnoreCase))
{
    var authParams = Encoding.Default.GetString(Convert.FromBase64String(authHeader.Substring("Basic ".Length)));
    var arr = authParams.Split(':');
    var username = arr[0];
    var password = arr[1];
}   

如果要用MVC编写自己的REST框架,则可以有一个基础的Controller类,并具有与该方法类似的方法,该方法在每次操作对调用方进行身份验证之前都会运行。

您可以轻松地将ASP.NET成员资格框架与ASP.NET MVC RESTful服务一起使用。 有关使用MVC RESTful服务的实现,请参见以下链接。

http://msdn.microsoft.com/en-us/magazine/dd943053.aspx

如果您不了解成员资格框架,请使用以下链接

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

希望对您有所帮助,谢谢

戴夫,

我明白你的意思。 成员资格框架广泛使用cookie进行身份验证。 您将凭据传递给服务器,服务器根据用户数据库对其进行验证,并向您颁发身份验证cookie。 下次每次urs的调用都包含此身份验证cookie时,服务器将使用该身份验证cookie对用户进行身份验证和授权。 现在,当您使用浏览器时,整个工作流程可以无缝地工作。

现在,在您的方案中,您可以在控制器中创建一个操作来验证凭据。 您可以在发布/获取数据中将凭据传递给此操作。 您必须将身份验证cookie保存在您的代码中,并在每次调用服务器时将其包括在内。 您可以重写HttpWebRequest类来执行这些步骤,并且可以在代码中使用相同的类。

如果这是很大的开销,并且您正在寻找类似Web服务的功能,那么我建议您研究一下WCF服务/ Ado.NET数据服务。 这些与会员资格框架更无缝地集成在一起,可能更适合您的结果。

希望对您有所帮助,谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM