問題は、AuthorizeAttributeがUser文字列とRole文字列の両方に定数を期待していることです。このブログ投稿にあるようなCustomAuthorizeAttributeを作成する必要があります。
したがって、次のような文字列をweb.configに保存するとします。
<add key="authorizedUsers" value="Dave,Chuck,Sally" />
次に、次のようなカスタムの承認属性があります。
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public IAuthorizationService _authorizationService { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var user = httpContext.User;
if (!user.Identity.IsAuthenticated)
{
return false;
}
var users = System.Configuration.ConfigurationManager.AppSettings["authorizedUsers"].Split(',');
if users.Contains(user.Identity.Name)
{
return true;
}
return _authorizationService.Authorize(httpContext);
}
}
テストされていないので、これをかなり速く一緒に投げたことに注意してください。これを簡単に変更して、データベースからユーザー名またはグループ名を取得し、完全に動的にすることができます。