「管理者」の役割を持つユーザーのみが参加できるように、コントローラーのアクションを保護したいと思います。
役割/メンバーシッププロバイダーを使用することはまったくありません。すべてがカスタムです。
私はこれまでにこれを作りました:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
return false;
string username = httpContext.User.Identity.Name;
UserRepository repo = new UserRepository();
return repo.IsUserInRole(username, "Admin");
}
}
ここで「管理者」をハードコーディングしたことに注意してください。
これを動的にしたいと思います。
この作品は今:
[CustomAuthorize]
public ActionResult RestrictedArea()...
しかし、私はこのようなものが欲しいです:
[CustomAuthorize(Roles = "Admin")]
public ActionResult RestrictedArea()