そのため、mvc Web サイトの許可を設定しています。そして、私は役割ベースの許可を行っています。コントローラーでアクションを実行するには、アクションの目的に応じて異なる役割が必要になります。最も推奨されるのはauthorizeattribute(ロールをキャッシュしたいので)であることは知っていますが、actionfilterattributeと同じにすることは可能ですか?
現在、次のような actionfilterattribute があります。
public class PermissionRequired : ActionFilterAttribute{
private readonly Role reqrole;
public PermissionRequired(Role reqRole)
{
reqrole = reqRole;
}
public override void OnActionExecuting(ActionExecutingContext filterContext) {
var ctrl = (GeneralController)filterContext.Controller;
if (!ctrl.CurrentUser.InRole(reqrole)) {
//some code to redirect this to a certain page
}
base.OnActionExecuting(filterContext);
}
}
GeneralController で現在のユーザーを取得する
public class GeneralController : Controller
private User currentUser;
public User CurrentUser {
get {
if (currentUser != null)
return currentUser;
int currentUserId = Convert.ToInt32(httpContext.User.identity.Name);
if (currentUserId != 0) {
this.currentUser = Tds.Users.FirstOrDefault(u => u.Id == currentUserId)
}
return currentUser;
}
}
およびこの属性を継承するコントローラーで
[PermissionRequired(Role.Moderator)]
public class SomeControllerThatNeedsPermission
{
[PermissionRequired(Role.SuperAdmin)]
public ActionResult SomeActionThatNeedsPermission()
{
}
}
だから、誰の助けも大歓迎です..コメントや考えも大歓迎です:D
どうもありがとう!