首页 > 解决方案 > 从数据库授权属性角色

问题描述

我想从数据库中获取以下角色(管理员、IT、..),而无需在操作结果之上进行硬编码。请提供任何帮助。

[Authorize(Roles = "Admin,IT")]
public ActionResult Index()
{
}

标签: c#asp.net-mvcauthenticationauthorizationroleprovider

解决方案


没有任何超级简单的方法可以做到这一点。您可以将[Authorize]属性应用到控制器而不是操作,但它仍然是“硬编码”它。

可以创建自定义 Authorization 属性 ([link]) 1,但您必须将 Routing 值以及允许访问该路由的角色存储在数据库中。然而,这只是将手动更改代码的负担转移到数据库中。

我真的不认为这真的应该被视为“硬编码”,因为您必须在某处声明您的授权,并且您仍然可以在不同的环境中拥有具有不同权限的不同用户。除了开发人员之外,还有谁最清楚哪些路线需要哪些授权?您是否想因为您在某处更改了路由而破坏您的访问控制?


推荐阅读