Chỉnh sửa: Vì ASP.NET MVC 4, cách tiếp cận tốt nhất chỉ đơn giản là sử dụng thuộc tính AllowAnonymous được tích hợp sẵn .
Câu trả lời bên dưới đề cập đến các phiên bản trước của ASP.NET MVC
Bạn có thể tạo thuộc tính ủy quyền tùy chỉnh kế thừa từ AuthorizeAttribute tiêu chuẩn với thông số bool tùy chọn để chỉ định xem ủy quyền có cần thiết hay không.
public class OptionalAuthorizeAttribute : AuthorizeAttribute
{
private readonly bool _authorize;
public OptionalAuthorizeAttribute()
{
_authorize = true;
}
public OptionalAuthorizeAttribute(bool authorize)
{
_authorize = authorize;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if(!_authorize)
return true;
return base.AuthorizeCore(httpContext);
}
}
Sau đó, bạn có thể trang trí bộ điều khiển cơ sở của mình với thuộc tính đó:
[OptionalAuthorize]
public class ControllerBase : Controller
{
}
và đối với bất kỳ bộ điều khiển nào bạn không muốn ủy quyền, chỉ cần sử dụng ghi đè bằng 'false' - ví dụ:
[OptionalAuthorize(false)]
public class TestController : ControllerBase
{
public ActionResult Index()
{
return View();
}
}