如何在Asp.Net MVC中将ServiceStack.HttpResult转换为Response

时间:2012-07-03 02:31:07

标签: asp.net-mvc authentication servicestack

Servicestack的AuthService专为REST风格的http响应而设计。因此 AuthService.Post(auth)返回HttpResult。因此您可以通过JQuery + Ajax轻松使用它。

但是如果你想将它与经典的Asp.Net MVC一起使用:

public ActionResult Login(Auth auth)
{
    HttpResult result = (HttpResult)AuthService.Post(auth);
    // YOU HAVE TO CHECK IF LOGIN SUCCESSFUL THAN 
    // IF SUCCESSFUL YOU HAVE TO REDIRECT IF IT HAS REDIRECTURL PARAMETER

    //if (result.StatusCode == System.Net.HttpStatusCode.Found)
    return View();
}

那怎么样?

1 个答案:

答案 0 :(得分:2)

我刚刚重新设计了AuthService并添加了Authenticate()方法,以便更容易从C#调用。

返回null意味着用户已经过身份验证(并且没有尝试过)。返回非null意味着用户身份验证成功。任何身份验证失败都会引发异常。

通过此更改,您现在可以执行以下操作:

public ActionResult Login(Auth auth)
{
    try {
        AuthResponse result = AuthService.Authenticate(auth);
        var alreadyAuthenticated = result == null;
        return alreadyAuthenticated
          ? View("success")
          : View("alreadyAuthenticated");                 

    } catch(Exception ex) {
       return View("authError");
    }
}

这些更改将在NuGet上的下一版ServiceStack(v3.84)中进行。在发布之前,您必须从main repo构建。