.net-core-3.1 - 自定义 AuthorizationHandler 中的 ASP.NET Core 3.1 MVC 重定向
问题描述
在 ASP.NET Core 2 MVC 应用程序中,我有一个自定义AuthorizationHandler
功能,可以将被阻止的用户重定向回主页。
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IsAllowedIpAddressRequirement requirement)
{
// Cast the context resource
if (context.Resource is AuthorizationFilterContext cxt)
{
// Failed!
cxt.Result = new RedirectToActionResult("Index", "Home", new { msg = "Your auth has failed." });
context.Succeed(requirement);
}
...
}
由于迁移到 ASP.NET Core 3.1,上下文是 class 的对象Microsoft.AspNetCore.Routing.RouteEndpoint
,它没有Result
属性。
如何将用户重定向到特定页面?
解决方案
我遇到了同样的问题,为了解决它,我改为过滤器(IAsyncResourceFilter
)而不是策略。
您可以将授权逻辑包装到策略中,然后调用 IAuthorizationService 并随时随地重定向。
例子:
public class MySampleActionFilter: IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
//if failed
context.Result = new RedirectToRouteResult(new RouteValueDictonary(new
{
controller = "Your Controller",
action = "Your Action"
}));
}
}
顺便说一句,这是针对 .net Core 3 及更高版本的
推荐阅读
- c# - Firebase Auth with asp.net core 5 返回 500 服务器错误
- matlab - 计算 n×n Hermitian 矩阵的最大特征值和相应的特征向量有多昂贵?
- callstack - 使用 innerHTML 后,我的可拖动元素没有移动
- python - 在 Tkinter 条目中写入多行
- microsoft-teams - 团队按钮中的自定义协议链接?
- c# - 如何使用 .NET Core MVC 在 View 中解析和显示 JSON 数据?
- ebpf - eBPF: TC on egress 如何识别和忽略 TC on ingress 直接回复的数据包?
- android - 如何在缺口设备中使 exoplayer 全屏显示
- angular - 角度路由参数问题
- javascript - 值高于 var 的猫鼬 findOne()