假设我对某个操作有以下基于角色的授权
{
"rules": {
".read": true,
".write": "auth.uid = 'myserver'"
}
}
这里是AuthorizeDBRoleAttribute类
[AuthorizeDBRoleAttribute(Roles = "Manager")]
public ActionResult Welcome()
{
return View();
}
我有单独的数据库表public class AuthorizeDBRoleAttribute : AuthorizeAttribute
{
public string Roles { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContextBase)
{
//Bind User Roles from Database here
string userRoles = "Manager,Supervisor,Inspector";
if (userRoles.IndexOf(Roles) > -1)
return true;
else
return false;
}
}
和Roles
假设当前登录的用户是Users
经理。这个Role
属性如何知道当前用户"AuthorizeDBRoleAttribute"
,以便它可以访问Action方法
this post讨论了如何设置基于角色的授权。我想进一步拖动下一步,看看MVC如何找出当前用户的角色等等
答案 0 :(得分:1)
从当前IPrincipal
开始,取自http上下文并由身份验证模块设置。
然后,根据您当前的方法(我们显然不知道)您要么已经存储在主体对象中的角色,要么您只拥有用户名,并从数据库中检索当前用户名的角色
您引用的代码的作者甚至在那里发表评论 - 检索当前用户名的用户角色,或多或少像:
string username = httpContextBase.User.Identity.Name;
var roles = whereeverYourRolesAreStored.RolesForUser( username );