是否有一种方法可以使[Authorize]属性在具有Authorize属性的控制器类中的一个动作中被忽略?
[Authorize]
public class MyController : Controller
{
[Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly,
public ActionResult PublicMethod()
{
//some code
}
public ActionResult PrivateMethod()
{
//some code
}
}
只有PrivateMethod()应该需要身份验证,但它也被要求了。
PS:我不想自定义授权过滤器。
[]的
可以使用[AllowAnonymous]
[Authorize]
public class MyController : Controller
{
[AllowAnonymous]
public ActionResult PublicMethod()
{
//some code
}
public ActionResult PrivateMethod()
{
//some code
}
}
默认情况下,这是不可能的-如果您为控制器设置[授权],那么只有认证的用户可以访问操作。
或
你可以尝试自定义决策:stackoverflow.
本文提供了一个解决方案:保护您的ASP。. NET MVC 3 Application
本文讨论了一种白名单方法,其中使用AllowAnonymous自定义属性来修饰操作。它要求您扩展AuthorizeAttribute
和OnAuthorization
方法以跳过AllowAnonymous -actions的授权检查。(该方法归功于MVC团队的安全专家Levi。)
public class MyController : Controller
{
[Authorize] //it will only work for the following action
public ActionResult PublicMethod()
{
//some code
}
public ActionResult PrivateMethod() //[Authorize] will not work for this action
{
//some code
}
}
仅供将来参考,这现在可以通过ASP中的[AllowAnonymous]
属性来完成。Net MVC 4。
更多信息