2012-07-02 40 views
1

我想在ASP.NET MVC 3 Web服务上使用jQuery和Forms身份验证实现身份验证。我的想法是,我将做一个jQuery的AJAX张贴到Web服务,这将做表单身份验证并返回一个cookie或令牌,并与每个数据访问调用,我的Web应用程序(jQuery)将使用该cookie或令牌。使用cookie或令牌与跨域表单身份验证

我有什么 -

我有AJAX调用来设置ASP.NET Web服务,我必须设置为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。如果我不应该使用cookies,是否有办法生成和使用某种类型的令牌?

回答

1

对于谁比谁碰巧对面来了,这里是我如何解决它:

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