Có khá một vài cách để giải quyết vấn đề này.
Tùy thuộc vào yêu cầu của bạn, bạn có thể triển khai IAuthorizationFilter cho mục đích này và triển khai phương thức OnAuthorization như thế này.
public void OnAuthorization(AuthorizationContext filterContext)
{
IUser user = _currentUserProvider.CurrentUser;
if (user != null)
{
// you can perform perform additional user-authorization here...
if(_authorizationService.IsAuthorized(user))
{
//user is authorized
return;
}
else
{
HandleUnAuthorizedRequest(filterContext);
return;
}
}
//user is not authenticated (not logged in)
HandleUnAuthenticatedRequest(filterContext);
}
Sau đó, bạn sử dụng actionFilter trên phương thức điều khiển hoặc lớp bộ điều khiển. Xem http://msdn.microsoft.com/en-us/library/dd410209(v=VS.90).aspx để biết thêm thông tin về Bộ lọc hành động.
Bây giờ, nếu bạn muốn tất cả các yêu cầu chưa được xác thực để truy cập vào ClientController, bạn có thể xử lý sự kiện AuthenticateRequest
trong lớp HttpApplication
(thường là global.asax.cs) và thực hiện điều gì đó giống như trong actionFilter ở trên.
Với URL giải pháp này được thay đổi, sẽ rất tuyệt nếu URL vẫn giữ nguyên –
Tôi thứ hai yêu cầu URL không thay đổi – Phil