![](/img/trans.png)
[英]Get list of Users with Roles without DBContext in asp.net mvc
[英]Asp.net MVC - How can I get user roles without knowing these roles?
我正在从事这个项目,管理员用户可以创建一些将作为项目角色的用户组。
因此,管理员将创建一个名为“ SuperAdmin”的用户组,并将在下拉列表中选择将成为该组一部分的用户。
我以前在使用RoleProvider和Controller的Attibutes的解决方案中工作,但是在那种情况下,我创建了所有组并在Controller中手动设置,例如:
[Access(Roles = "SuperAdmin")]
public UserController : Controller
{
}
在上面的示例中,我知道该组名为“ SuperAdmin”。 但是,现在,在这个新项目中,我不知道管理员用户将创建哪些组。
那么,如何获得允许用户动态访问的所有角色?
谢谢!
如果我正确理解了您的问题,则希望对值“ SuperAdmin”进行软编码。
我遇到了类似的问题,因为我想验证用户是否可以访问某个资源(称为文档),但是在应用程序开发过程中该资源的ID是未知的。 我通过创建自己的基于表的安全性并将其核心逻辑放入我的模型(实际上是业务逻辑层)中来解决了该问题。 这使我能够安全修剪数据库中的数据检索,并在用户请求其无法访问的资源时重定向用户。
如果仍要使用属性来执行此操作,则可以创建一个自定义属性(对ASP.NET MVC使用的属性进行建模),该属性从数据库中查找适当的权限并进行确定。
或者,您可以使用以下方法在controller方法内部进行操作:
Public ActionResult EditThing(int ID)
{
ThingRepository repository = new ThingRepository();
If (!repository.UserHasAccess(int ID))
Return View("NotAuthorized")
//
// Do stuff here
}
如果需要有关存储库的更多信息,请参见NerdDinner教程 。
此处更多信息: ASP.NET MVC中基于文档的安全性
您是否考虑过编写自己的属性以装饰动作?
在那种情况下,您可以使用该属性获取用户的访问权限,将其与页面访问表进行匹配,然后返回结果,并允许或拒绝对页面/操作的访问。
我认为您将需要一个表来确定角色可以访问哪些页面,哪些页面可以与用户分配给的角色进行交叉引用。
或者,您可以通过这样的方式来编写属性,以便它规定允许查看页面的角色。
[MyAccessAttribute(Allow="SuperUser", "Admin")]
public ActionResult MyAction()
这有帮助/有意义吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.