Tôi đang làm việc trên ứng dụng mvc .net và tôi đang sử dụng xác thực biểu mẫu. Tôi muốn chuyển hướng người dùng đến trang mà anh ấy yêu cầu sau khi anh ấy được xác thực. Bất kỳ trợ giúp sẽ được đánh giá cao.Chuyển hướng đến trang được yêu cầu sau khi xác thực
Trả lời
Nếu bạn tạo dự án ứng dụng Internet ASP.NET MVC 3 hoặc 4, nó sẽ có một ví dụ hoàn chỉnh về cách sử dụng url trả về khi xác thực.
Khi bạn thêm AuthorizeAttribute vào bộ điều khiển để bắt buộc xác thực, nó sẽ chuyển hướng người dùng đến phương thức Đăng nhập của bạn và tự động nối tham số returnUrl. Từ đó, bạn cần phải theo dõi về nó như bạn thấy hình thức đăng nhập của bạn:
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
và sau đó thêm nó vào bộ sưu tập đường mẫu đăng nhập của bạn:
@*//ReSharper disable RedundantAnonymousTypePropertyName*@
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
@*//ReSharper restore RedundantAnonymousTypePropertyName*@
}
Khi người dùng gửi các đăng nhập, giả sử họ xác thực đúng cách, bạn sẽ chỉ chuyển hướng đến returnUrl:
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
return RedirectToLocal(returnUrl);
}
Phần khó nhất là theo dõi ReturnUrl qua chuỗi GET/POST.
Nếu bạn muốn xem cách AuthorizeAttribute hoạt động, this StackOverflow bài đăng hiển thị thiết lập returnUrl với yêu cầu ban đầu.
Bạn cũng cần đảm bảo rằng bạn xác thực returnUrl thực sự là url địa phương hoặc bạn trở nên dễ bị tấn công chuyển hướng mở. RedirectToLocal() là một phương pháp helper từ MVC 4 Internet mẫu ứng dụng mà không xác nhận điều này:
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
- 1. Cách chuyển hướng đến URI được yêu cầu sau khi xác thực bằng Zend_Auth?
- 2. Chuyển hướng sau khi yêu cầu POST với jquery
- 3. Thực hiện yêu cầu POST khi chuyển hướng trong bình
- 4. FormsAuthentication.SetAuthCookie() có yêu cầu chuyển hướng không?
- 5. htaccess: chuyển hướng tất cả yêu cầu đến miền khác
- 6. Yêu cầu chuyển hướng đến giao diện quản trị
- 7. IIS: Chuyển hướng TẤT CẢ các yêu cầu đến một trang?
- 8. Chuyển hướng đến URL trước sau khi đăng nhập - Rails
- 9. Cách chuyển hướng đến trang đăng nhập sau khi phiên hết hạn trong GWT RPC gọi
- 10. Chuyển hướng đến trang khác sau khi phản hồi.End() đã được gọi trong C#
- 11. HTTP: Yêu cầu POST nhận được 302, yêu cầu chuyển hướng có phải là GET không?
- 12. Yêu cầu chuyển hướng đến CDN bằng nginx
- 13. Chuyển hướng đến trang trước sau khi đăng nhập bằng cách sử dụng PHP
- 14. Gửi yêu cầu GET theo cách thủ công đến một trang web. 302 lỗi chuyển hướng
- 15. Lỗi xác thực hộ chiếu dẫn đến vòng chuyển hướng
- 16. ứng dụng Facebook được chuyển hướng đến trang 404
- 17. Yêu cầu js ruins chuyển hướng mã
- 18. Chuyển hướng trở lại trang sau khi đăng nhập
- 19. Cách chuyển hướng đến trang khác sau 5 phút?
- 20. HttpPost to ReturnURL sau khi chuyển hướng
- 21. đường ray ruby - chuyển hướng đến url yêu cầu ban đầu
- 22. Trang web mạng intranet ASP.NET yêu cầu thông tin xác thực - Xác thực Windows
- 23. Xác thực Django và Ajax - URL yêu cầu đăng nhập
- 24. Chuyển hướng sau khi đăng nhập?
- 25. Trả lại chuyển hướng khi phản hồi yêu cầu XHR
- 26. Khi xác thực ServiceStack không thành công, không chuyển hướng?
- 27. Chuyển hướng Xác thực Windows sang trang 401 tùy chỉnh
- 28. Làm thế nào để có được URL trang trước từ yêu cầu trong servlet sau dispatcher.forward (yêu cầu, phản ứng)
- 29. Lỗi: Chuyển đổi sang loại vô hướng được yêu cầu
- 30. Cách để Selenium đợi trang chuyển tiếp chuyển hướng trước khi chạy xác nhận
Cảm ơn bạn rất nhiều, nó làm việc bây giờ :) –
@HediNaily: một điểm đến Hãy nhớ không phải là để tin tưởng ReturnURL và kiểm tra nó trước khi sử dụng nó để chuyển hướng người dùng –
@ mohsen.d Đồng ý. RedirectToLocal() là một trình trợ giúp MVC 4 đi kèm với mẫu Ứng dụng Internet để xác thực URL trước khi chuyển hướng. Tôi sẽ thêm nó vào câu trả lời cho những người không có phương thức trợ giúp. – mfanto