2

.Net MVC 4 を使用して 1 つの領域のみを拒否しようとしていますが、結果が得られません。web.configに入れる<authentication mode="Forms" />と、すべてが拒否されます。すべてのサイトであり、私が望むものではありません。管理領域のみを拒否したいのです。

私は自分の管理エリアに入れましAuthorizeAttributeBaseControllerが、まだ機能していません:

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

            if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                filterContext.Result = new RedirectResult("~/admin/login");
            }
        }
    }

Global.asax:filters.Add(new AutenticarAdminAttribute());

<authentication mode="Forms" />が web.config から削除するAuthorizeAttributeと、作業は行われず、IsAuthenticated常に true になります。

そして、もう一度<authentication mode="Forms" />web.config に入れると、すべてが拒否されます。

エリアだけを制限することはできません。

管理エリアの BaseController:

[AutenticarAdmin]
public class BaseController : Controller
{
    public BaseController()
    {
    }
}

管理エリアの DefaultAdminController:

public class DefaultController : BaseController
    {
        public ActionResult Index()
        {
            return View();
        }
    }

公開コントローラー:

public class DefaultController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
4

2 に答える 2

0

OnAuthorization メソッドをオーバーライドし、内部でユーザーが IsAuthenticated かどうかを確認しています。

承認と認証は 2 つの異なるものです。

認証に関しては、デフォルトのリダイレクト URL とログイン URL を .config ファイル (認証タグ内) に設定できます。

それが役立つことを願っています。

于 2012-08-24T14:10:47.120 に答える