Dot-Net
使用 ASP.NET MVC 的 jQuery 表單身份驗證
是否可以使用 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 中完成的版本。