【发布时间】:2018-02-15 18:38:34
【问题描述】:
我正在尝试在 .net core 2.0 中实现 AuthorizationHandler ,我需要授权用户并根据想要重定向到我的应用程序验证中的不同操作方法的条件工作正常,但我如何将用户重定向到拒绝访问或授权失败时的登录页面。
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中完成,您可以在其中定义您支持的身份验证方法等。
标签: asp.net-core asp.net-core-2.0 .net-core-2.0