Có, có thể. Chỉ cần gửi biểu mẫu đăng nhập bằng cách sử dụng phương thức described here by mike bosch và trả về cơ sở dữ liệu json với returnUrl nếu có.
Tôi đã tạo ra một lớp LoginResultDTO nhẹ mà tôi trở lại như json:
public class LoginResultDTO
{
public bool Success {get;set;}
public string Message {get;set;}
public string ReturnUrl {get;set;}
}
Dưới đây là một khối kịch bản từ quan điểm đăng nhập của tôi:
<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>
này sẽ ajax quấn theo hình thức đăng nhập. Lưu ý rằng đây là việc thực hiện đơn giản nhất của mã javascript có thể nhưng đó là một nơi để bắt đầu.
Sau đó, tôi đã sửa đổi hành động đăng nhập của tôi trong AccountController và ở các vị trí có liên quan đặt một cái gì đó như thế này:
if(Request.IsAjaxRequest())
{
return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"});
}else
{
return View();
}
Vì vậy, đây là một siêu nhẹ nhưng phiên bản khá đầy đủ về cách jquery xác thực có thể được thực hiện trong asp. net mvc.
Nguồn
2009-01-30 14:25:21
Nếu tôi không thực hiện chuyển hướng, cookie xác thực sẽ được đặt trên trang đó như thế nào? –
Mọi thứ đều tốt khi bài đăng ajax đó trả lại kết quả thành công. Nhưng bạn sẽ hầu như luôn luôn chuyển hướng sau khi đăng nhập thành công. Trong kịch bản ajax bằng cách gán url cho thuộc tính 'location.href' trong javascript. –
Tôi vừa mới bắn ra con đom đóm để xem chuyện gì đang xảy ra. Khi bạn nhấn hành động LogOn với ajax và đăng nhập của bạn thành công, có một mục nhập cookie thiết lập trong tiêu đề phản hồi với cookie auth. Đó là lý do tại sao nó hoạt động. –