C# asp.net中是否存在用于拒绝一个用户或角色访问某个方法的批注?

C# asp.net中是否存在用于拒绝一个用户或角色访问某个方法的批注?,c#,asp.net-mvc,annotations,C#,Asp.net Mvc,Annotations,我想如果在asp.net mvc exixts中排除某些用户访问操作方法的可能性 此外,“授权”注释允许用户访问一些操作方法: [Authorize(Users="*")] public ActionResult method1() { ... } 排除的类似注释,例如: [Deny(Users="user1")] public ActionResult method1() { ... } [Deny(Users="user1,user2")] 我认为没有,但您可以

我想如果在asp.net mvc exixts中排除某些用户访问操作方法的可能性

此外,“授权”注释允许用户访问一些操作方法:

[Authorize(Users="*")]   
public ActionResult method1() { ... }
排除的类似注释,例如:

[Deny(Users="user1")]        
public ActionResult method1() { ... }
[Deny(Users="user1,user2")] 

我认为没有,但您可以创建一个自定义的
AuthorizeAttribute
,如下所示:

public class DenyAttribute : AuthorizeAttribute
{
   private string[] deniedusers;  
   public CustomAuthorizeAttribute(params string[] users)  
   {  
      this.deniedusers = users;  
   }  
   protected override bool AuthorizeCore(HttpContextBase httpContext)  
   {  
      // you could improve this
      return !this.deniedusers.Contains(httpContext.User.Identity.Name);  
   }  
}
或者更简单的解决方案:

public class DenyAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        return !base.AuthorizeCore(httpContext);
    }
}
然后,您将能够完全按照您的示例使用它:

[Deny(Users="user1")]        
public ActionResult method1() { ... }
[Deny(Users="user1,user2")] 

感谢SmartDev的回答,很抱歉,我看到有点晚了。。我已经用一种更为琐碎的策略解决了这个问题。。我在方法中使用了“User.Identity.Name”。。再次感谢您的解决方案,我一定会考虑未来。