我正在使用MVC3 / 4。但这只是授权中的一般性问题。
我所拥有的一个角色在数据库中被命名为“Trip Leader”,其中包含一个空格。
我尝试了[Authorize(Roles="'Trip Leader', Administrator")]
,但它无法正常工作。有人可以帮忙吗?
答案 0 :(得分:3)
创建您自己的属性并从AuthorizeAttribute派生。然后重写AuthorizeCore方法并实现自己的逻辑,并对包含空格的角色进行验证。
一个例子可能是这样的:
public class CustomAuthAttribute : AuthorizeAttribute
{
private readonly IUserRoleService _userRoleService;
private string[] _allowedRoles;
public CustomAuthAttribute(params string[] roles)
{
_userRoleService = new UserRoleService();
_allowedRoles = roles;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
//something like this.
var userName = httpContext.User.Identity.Name;
var userRoles = _userRoleService .GetUserRoles(userName); // return list of strings
return _allowedRoles.Any(x => userRoles.Contains(x));
}
}
<强>用法强>
[CustomAuth("role withspace","admin")]
public ActionResult Index()
{
}
答案 1 :(得分:0)
试试这个:
[Authorize(Roles="Trip Leader")]
[Authorize(Roles="Administrator")]
编辑:上述代码要求用户履行这两个角色。如果您正在寻找/或授权,请尝试以下:
[Authorize(Roles="Trip Leader, Administrator")]
答案 2 :(得分:0)
我无法得到其他工作的答案。我的角色中包含逗号,并且不会使用原始的AuthorizeAttribute。
<td class="td10"><span class="prefix">$</span><input class="my-input" type='text' class='form-control' id="boqRate" name="boq[boqRate]"></td>