2012-07-02 74 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驗證身份驗證。