使用带有跨域表单身份验证的cookie或令牌

时间:2012-07-02 15:59:56

标签: authentication cookies forms-authentication

我正在尝试在ASP.NET MVC 3 Web服务上使用jQuery和Forms身份验证实现身份验证。我的想法是,我将向Web服务执行jQuery AJAX帖子,该服务将执行表单身份验证并返回cookie或令牌,并且对于每次数据访问调用,我的Web应用程序(jQuery)将使用该cookie或令牌。 / p>

我有什么 -

我对ASP.NET Web服务设置进行了AJAX调用,并且我的Web服务设置如下:

public ActionResult Login(string userName, string password, bool rememberMe, string returnUrl)
{

    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(userName, password))
        {
            return Json(FormsAuthentication.GetAuthCookie(userName, rememberMe), JsonRequestBehavior.AllowGet);

        }
        else
        {
            return Json("Authentication Failed", JsonRequestBehavior.AllowGet);
        }
    }
}

这是有效的,如果我使用正确的凭据进行AJAX调用,我会在JSON中返回一个cookie,如果没有,我将返回auth失败的字符串。

我不知道 - 收到JSON cookie后如何处理它。我可以将它存储在HTML5本地存储中,但我不知道它的哪一部分(或整件事)要通过我的数据访问调用发回,以及如何解释它并检查Web服务端的cookie。如果我不应该使用cookie,有没有办法生成和使用某种令牌?

1 个答案:

答案 0 :(得分:1)

对于碰巧碰到的其他人,我就是这样解决的:

我意识到通过JSON发回cookie是没有必要的。通过使用FormsAuthentication.SetAuthCookie,设置了一个HTTP Only cookie,它将通过AJAX调用自动发送。这样,服务器是唯一负责Auth cookie的服务器,并且可以使用Request.IsValidated验证身份验证。