我正在尝试在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,有没有办法生成和使用某种令牌?
答案 0 :(得分:1)
对于碰巧碰到的其他人,我就是这样解决的:
我意识到通过JSON发回cookie是没有必要的。通过使用FormsAuthentication.SetAuthCookie
,设置了一个HTTP Only cookie,它将通过AJAX调用自动发送。这样,服务器是唯一负责Auth cookie的服务器,并且可以使用Request.IsValidated
验证身份验证。