C# asp.net中是否存在用于拒绝一个用户或角色访问某个方法的批注?
我想如果在asp.net mvc exixts中排除某些用户访问操作方法的可能性 此外,“授权”注释允许用户访问一些操作方法: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")] 我认为没有,但您可以
[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”。。再次感谢您的解决方案,我一定会考虑未来。