ログインページ以外のすべてのページでユーザーの認証が必要となるように、Webサイト全体を保護したいと考えています。これを達成するために、私は、アプリケーションの起動時にAuthorize
フィルタを登録します。 Umbraco MVC - どのように私はglobaをオーバライドすることができますコントローラのフィルタを承認?
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
は今まだそれに
[AllowAnonymous]
属性を適用したにもかかわらず認証されるユーザーが必要です私の
LoginController
、との問題があります。ページには、他の子アクションはありません
[AllowAnonymous]
public class LoginController : SurfaceController
{
public LoginController()
{
}
[HttpPost]
[ValidateAntiForgeryToken]
[AllowAnonymous]
public async Task<ActionResult> HandleLogin(LoginModel model, string returnTo)
{
return CurrentUmbracoPage();
}
}
と問題がLoginController
で決定的である:これは私のログインコントローラです。ここで何が起こり、どのように修正することができますか?
UPDATE:私の見解ではあり
ログインページテンプレート:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
// Layout = "Master.cshtml";
Layout = null;
}
<div>@Umbraco.Field("bodyText")</div>
@Html.Partial("Login")
ログイン部分がある:
@using ClientDependency.Core.Mvc
@using PlayProj.Presentation.Controllers
@using Umbraco.Web
@using Umbraco.Web.Models
@{
var loginModel = new LoginModel();
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
Html
.RequiresJs("~/scripts/jquery.validate.hooks.js", 200)
.RequiresJs("~/scripts/foundation.form.validation.js", 201);
}
@using (Html.BeginUmbracoForm<LoginController>("HandleLogin", null, new { @class = "loginForm", autocomplete = "off" }))
{
<fieldset>
<legend>Login</legend>
<button>Login</button>
</fieldset>
}
これまでのところ、正しいパスを辿っていますが、「LoginController」に関する十分な情報が表示されていません。たぶん、あなたが手伝ってくれるものがなかったかもしれません。そのクラスの残りの部分を表示してください。 – Nkosi
こんにちはNikosi、コントローラは本当に他に何も持っていません - HandleLoginアクションだけ。しかし、この問題はすでにページ・ロード時に発生しています。ページは無限リダイレクションループに入ります。 – lekso
標準Umbracoの「パブリックアクセス」機能を使用しているだけではない理由はありますか?メンバーを認可している場合、世界中のすべてのサーフェスコントローラでこれを設定しようとするよりも簡単になります。また、ページ全体や一部の部分だけを保護しようとしていますか?編集:RenderMvcControllerはおそらくより良い選択になります。 –