Setup (sử dụng MVC 4)ASP.net MVC lọc Authorize toàn cầu buộc đăng nhập vào một hành động AllowAnonymous
public class MyAuthorizeAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(HttpContextBase httpContext) {
var isAuthorised = base.AuthorizeCore(httpContext);
if(isAuthorised) {
// retrieve authentication ticket from cookie and
// create custome principal and attach to
// httpContext.User
}
return isAuthorised;
}
}
Gloabl.asax.cs:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyAuthorizeAttribute());
}
HomeController.cs:
using System.Web.Mvc;
public class HomeController : Controller
{
[AllowAnonymous]
public ActionResult Index()
{
return View();
}
}
Sự cố
Cuộc gọi đến trang chủ bắt buộc tải trang đăng nhập.
Câu hỏi
Khi HomeController.Index() hành động được trang trí với [AllowAnonymous], tại sao ASP chuyển hướng tôi đến xem đăng nhập?
Tôi đang sử dụng this bài viết để tham khảo
Tôi vừa kiểm tra với Ủy quyền tích hợp và nó hoạt động tốt cho tôi. Có thể bạn phải kiểm tra mã ủy quyền tùy chỉnh của mình. – VJAI
Tôi đã thử với thuộc tính Authorize tích hợp, thay thế thuộc tính đang được thêm vào bộ lọc chung trong global.asax của tôi nhưng tôi vẫn đang được chuyển hướng đến trang đăng nhập khi gọi hành động chỉ mục trên bộ điều khiển nhà. Tui bỏ lỡ điều gì vậy? Một số thiết lập trong cấu hình web của tôi? Tôi không có nhà cung cấp dịch vụ thành viên, nhà cung cấp vai trò hoặc nhà cung cấp hồ sơ nào được định cấu hình. Tôi có nên? –
Cài đặt xác thực biểu mẫu trong web.config là cài đặt chuyển hướng đến trang đăng nhập. Nhưng bạn không cần phải cài đặt bổ sung. Tôi đã thử bằng cách tạo ra một mẫu ứng dụng MVC 4/Internet mới đánh dấu bộ điều khiển Home với hành động Authorize và Index với AllowAnonymous và nó hoạt động như mong đợi. – VJAI