私はユーザーを承認する必要があるAuthorizationHandlerを.netコア2.0に実装しようとしています。アプリケーションの検証作業内で別のアクションメソッドにリダイレクトしたい条件に基づいています[OK]をクリックして、認証が失敗した場合に、ユーザーを[Access Denied]ページまたは[Login Denied]ページにリダイレクトする方法について説明します。ASP.NET Core 2.0 AuthorizationHandler、HandleRequirementAsyncメソッドからユーザーをリダイレクト
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, HasPermissionRequirement requirement)
{
var controllerContext = context.Resource as AuthorizationFilterContext;
if (sessionManager.Session.sysUserID <= 0)
{
controllerContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Account", action = "Login", area = "" }));
return Task.FromResult(0);
}
if (Utilities.GetInt32Negative(PermissionID) == 1 || Utilities.GetInt32Negative(PermissionID) == -1)
{
if (!PagePath.Equals("~/"))
controllerContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "NoAccess", area = "" }));
}
context.Succeed(requirement);
}
else
{
if (!PagePath.Equals("~/"))
controllerContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Home", action = "NoAccess", area = "" }));
}
return Task.FromResult(0);
}
にリダイレクトすることができます承認要件からのリダイレクトを行うことは想定されていません。認証が失敗した場合の正しいページにリダイレクトするように、認証ハンドラを設定します。これは、通常、 'Startup'で行われます。ここでは、サポートする認証方法を定義します。 – juunas