2009-01-30 39 views
24

Có thể sử dụng lời gọi jQuery ajax để thực hiện Xác thực Mẫu với ASP.NET MVC không? Tôi đã không thể tìm thấy bất kỳ ví dụ như vậy.Xác thực Biểu mẫu jQuery với ASP.NET MVC

Cụ thể hơn, làm cách nào để đặt cookie xác thực trên trang (không có chuyển hướng) để tôi có thể thực hiện các yêu cầu ajax được xác thực liên tiếp?

Trả lời

18

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.

+0

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? –

+0

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. –

+0

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. –

3

Steve Reynolds có một bài viết hay về cách thực hiện một số điều này.

Link to article

+5

liên kết này đã chết – KodeKreachor

0

Hãy xem xVal. Nó có thể sử dụng bất kỳ thư viện xác nhận phía máy khách nào nhưng sử dụng jQuery Valiation theo mặc định.

Các vấn đề liên quan