我需要在ASP.NET MVC应用程序中向具有两个角色的用户授权一个Controller。我正在使用Authorize属性,如下所示:
[Authorize(Roles =“制作人,编辑者”)]
但这允许生产者和编辑者成为控制器。我只想允许用户同时拥有两个角色,而不仅仅是其中一个。
我怎么能做到这一点?
正如问题所指出的,当在单个调用中给出多个角色时,将应用它们,以便如果用户属于所列角色中的任何一个,则将授予他们访问权限;像逻辑运算符。 Authorize()
OR
另外,要获得逻辑AND
运算符的效果,可以多次应用该Authorize
属性。例如..
[Authorize(Roles = "Producer")]
[Authorize(Roles = "Editor")]
public ActionResult Details(int id) {
// Only available to users who are Producers AND Editors
}
对于上面的示例,操作主体只能由Producer
和Editor
角色的用户访问。
Rudi在评论中指出,这使您可以创建一些相当复杂的访问规则,而无需实现自定义AuthorizeAttribute
。例如,在以下代码中,如果用户同时处于以下两个位置,则他们可以执行该操作:a)Enabled
角色中的b)Editor
或Admin
角色中的一个。
[Authorize(Roles = "Enabled")]
[Authorize(Roles = "Editor,Admin")]
public ActionResult Details(int id) {
// Only available to users who are Enabled AND either an Admin OR an Editor
}
我不确定哪个版本带来了这个功能,但是它至少可以在MVC 4和5中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句