混合授权注释

时间:2012-02-11 22:24:08

标签: c# asp.net-mvc annotations

我正在编写此webapp并希望通过混合条件授权控制器。例如:

如果用户处于“管理员”角色或其用户名为“programad”,我想允许访问,如下所示:

[Authorize(Roles = "Administrator", Users = "programad")]

我想要那个,因为当我第一次在应用程序上注册时(用于测试,开发过程等)我还不是管理员。我希望通过我的用户名获得第一次访问权限,然后我可以将自己置于管理员角色。

我把它放在控制器级别但似乎不起作用,它要求我再次登录,即使我输入我的凭据也不能访问它。

如何通过我的用户名和/或我的角色进行授权?

1 个答案:

答案 0 :(得分:2)

这是因为AuthorizeAttribute表示用户必须处于“管理员”角色并且名为“programad”。最简单的解决方法是创建另一个角色,将用户“programad”放入其中,然后将AuthorizeAttribute更改为

[Authorize(Roles = "Administrator, NewRole")]

其中NewRole是您命名用户“programad”的新角色。

如果您确实需要更改AuthorizeAttribute以使用角色OR用户进行操作,则需要创建一个派生自AuthorizeAttribute的新类,并覆盖填充授权逻辑的AuthorizeCore方法。