代码之家  ›  专栏  ›  技术社区  ›  schwindelig

在MVC 2中验证REST请求

  •  2
  • schwindelig  · 技术社区  · 14 年前

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

    3 回复  |  直到 14 年前
        1
  •  3
  •   realworldcoder    14 年前

    我不确定里面有没有内置的东西,但是你可以自己写。类似于:

    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框架,那么您可以有一个基本的控制器类,并有一个类似于此的方法,该方法在每个操作之前运行,以对调用方进行身份验证。

        2
  •  1
  •   Naveen    14 年前

    您可以轻松地将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

    希望能帮上忙,谢谢

        3
  •  1
  •   Naveen    14 年前

    戴夫,

    现在在您的场景中,您可以在控制器中创建一个操作来验证凭据。您可以在post/get data中将凭据传递给此操作。您必须将身份验证cookie保存在代码中,并在每次调用服务器时包含该cookie。可以重写HttpWebRequest类来执行这些步骤,并且可以在代码中使用相同的类。

    如果这是一个很大的开销,而且您正在寻找类似Web服务之类的功能,我将建议您研究WCF服务/Ado.NET数据服务。它们与成员框架的集成更加无缝,可能更适合您的结果。