Dot-Net

使用 ASP.NET MVC 的 jQuery 表單身份驗證

  • January 30, 2009

是否可以使用 jQuery ajax 呼叫通過 ASP.NET MVC 執行表單身份驗證?我一直找不到任何這樣的例子。

更具體地說,如何在頁面上設置 auth cookie(沒有重定向),以便我可以發出連續的經過身份驗證的 ajax 請求?

是的,這是可能的。只需使用mike bosch 在此處描述的方法送出登錄表單,並返回帶有 returnUrl 的 json 資料結構(如果有)。

我創建了一個輕量級的 LoginResultDTO 類,我以 json 的形式返回:

public class LoginResultDTO
{
 public bool Success {get;set;}
 public string Message {get;set;}
 public string ReturnUrl {get;set;}
}

這是我的登錄視圖中的一個腳本塊:

<script type="text/javascript">
       $(document).ready(function() {
           var form = $($("form")[0]);
           form.submit(function() {
               var data = form.serialize();
               $.post(form.attr("action"), data, function(result, status) {
                   if (result.Success && result.ReturnUrl) {
                           location.href = result.ReturnUrl;
                   } else {
                       alert(result.Message);
                   }
               }, "json");
               return false;
           });
       });
</script>

這將 ajax 包裝登錄表單。請注意,這是可能的 javascript 程式碼的最簡單實現,但它是一個開始的地方。

然後我在 AccountController 中修改了我的 LogOn 操作,並在相關位置放置瞭如下內容:

if(Request.IsAjaxRequest())
{
 return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"});
}else
{
 return View();
}

所以這是一個超輕量但相當完整的 jquery 身份驗證如何在 asp.net mvc 中完成的版本。

引用自:https://stackoverflow.com/questions/495634