私のプロジェクトをasp.netコアに移行しています。私のコントローラのCustomAuthorization属性を移行することに悩まされています。ここに私のコードです。ASP.NET CoreのHandleUnauthorizedRequestをオーバーライドする方法
public class CustomAuthorization : AuthorizeAttribute
{
public string Url { get; set; }
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new RedirectResult(Url + "?returnUrl=" + filterContext.HttpContext.Request.Url.PathAndQuery);
}
else if (!Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
{
filterContext.Result = new ViewResult
{
ViewName = "AcessDenied"
};
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
は、私は基本的に私は役割が満たされていないときに別のログインページにリダイレクトするためにそれを使用することができますので、私のコントローラ
[CustomAuthorization(Url = "/Admin/Account/Login", Roles = "Admin")]
public abstract class AdminController : Controller { }
にそれを使用しました。私はいくつかの領域があり、それぞれに異なるログインページがあります。私は、管理コントローラ上で、その後CookieAuthenticationOptionsに
[Area("Admin")]
[Authorize(ActiveAuthenticationSchemes = "Admin", Roles = "Admin")]
を
このようなservices.Configure<CookieAuthenticationOptions>(options =>
{
options.AuthenticationScheme = "Admin";
options.LoginPath = "/Admin/Account/Login";
});
を使用してみましたが、私がログインした後に、それはまだで取得傾ける。
は、あなたがこのコードをステップ実行しようとしていますか?実行されますか?それはどこで失敗するのですか? – Darkonekt
http://stackoverflow.com/questions/31464359/custom-authorizeattribute-in-asp-net-5-mvc-6をご覧ください –