MVC3/4を使用しています。しかし、これは承認に関する一般的な質問にすぎません。
私が持っている役割の 1 つは、データベースで "Trip Leader" という名前で、スペースが含まれています。
試し[Authorize(Roles="'Trip Leader', Administrator")]
てみましたが、うまくいきませんでした。誰でも助けることができますか?
MVC3/4を使用しています。しかし、これは承認に関する一般的な質問にすぎません。
私が持っている役割の 1 つは、データベースで "Trip Leader" という名前で、スペースが含まれています。
試し[Authorize(Roles="'Trip Leader', Administrator")]
てみましたが、うまくいきませんでした。誰でも助けることができますか?
独自の属性を作成し、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()
{
}
これを試して:
[Authorize(Roles="Trip Leader")]
[Authorize(Roles="Administrator")]
編集:上記のコードでは、ユーザーが両方の役割を果たす必要があります。いずれかまたは両方の認証を探している場合は、次のことを試してください。
[Authorize(Roles="Trip Leader, Administrator")]