我正在编写此webapp并希望通过混合条件授权控制器。例如:
如果用户处于“管理员”角色或其用户名为“programad”,我想允许访问,如下所示:
[Authorize(Roles = "Administrator", Users = "programad")]
我想要那个,因为当我第一次在应用程序上注册时(用于测试,开发过程等)我还不是管理员。我希望通过我的用户名获得第一次访问权限,然后我可以将自己置于管理员角色。
我把它放在控制器级别但似乎不起作用,它要求我再次登录,即使我输入我的凭据也不能访问它。
如何通过我的用户名和/或我的角色进行授权?
答案 0 :(得分:2)
这是因为AuthorizeAttribute表示用户必须处于“管理员”角色并且名为“programad”。最简单的解决方法是创建另一个角色,将用户“programad”放入其中,然后将AuthorizeAttribute更改为
[Authorize(Roles = "Administrator, NewRole")]
其中NewRole是您命名用户“programad”的新角色。
如果您确实需要更改AuthorizeAttribute以使用角色OR用户进行操作,则需要创建一个派生自AuthorizeAttribute的新类,并覆盖填充授权逻辑的AuthorizeCore方法。