1

我正在尝试在 ASP.NET MVC 3 Web 服务上使用 jQuery 和表单身份验证来实现身份验证。我的想法是我将 jQuery AJAX 发布到 Web 服务,它将执行表单身份验证并返回一个 cookie 或令牌,并且对于每个数据访问调用,我的 Web 应用程序 (jQuery) 将使用该 cookie 或令牌。

我所拥有的——

我已经设置了对 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,如果不是,我会返回身份验证失败的字符串。

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

4

1 回答 1

1

对于碰巧遇到的其他任何人,这是我解决它的方法:

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

于 2012-07-06T17:05:27.703 回答