4

MVC 4 プロジェクトで SimpleMembershipProvider を使用しているときに、適切なロールを持たないユーザーがアクションを実行すると、アカウント/ログインにリダイレクトされます。ユーザーを自分の「ページを表示するのに十分な権限がありません」アクションにリダイレクトするにはどうすればよいですか?

4

1 に答える 1

6

メソッドを上書きしてそれを行うことができます

public class CustomAuthorizeAttribute : AuthorizeAttribute {
    public override void OnAuthorization(AuthorizationContext filterContext) {
        base.OnAuthorization(filterContext);

        if (filterContext == null) {
            throw new ArgumentNullException("filterContext");
        }

        if ({your code detecting no user is logged}) {
            filterContext.Result = new RedirectResult(System.Web.Security.FormsAuthentication.LoginUrl + "?returnUrl=" + filterContext.HttpContext.Server.UrlEncode(filterContext.HttpContext.Request.RawUrl));
            return;
        }

        if ({your code detecting that the user has no access}) {
            var ViewData = new ViewDataDictionary();
            ViewData.Add("Title", "No access");
            ViewData.Add("Description", "blah blah blah blah blah blah blah ");
            filterContext.Result = new ViewResult { ViewName = "~/Views/Shared/NoAccess.cshtml", ViewData = ViewData };
        }

    }
于 2013-07-16T15:39:33.090 に答える