首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.net核心授权在失败时重定向到指定路径

问Asp.net核心授权在失败时重定向到指定路径
EN

Stack Overflow用户
提问于 2017-08-04 14:41:14
回答 1查看 2.2K关注 0票数 6

在“旧”ASP.NET中,我可以构建一个自定义的授权属性并覆盖HandleUnauthorizedRequest。我似乎不能使用自定义授权处理程序来使用ASP.NET核心来完成这个任务。后者要么是“成功”,要么是“失败”,我想根据失败的性质,转向其他控制器的行动。

这里是一个场景。我的web应用程序的用户声称他们是“活动”用户,即他们已经完全注册,我们已经验证了他们的详细信息等等。新用户已经使用OpenIdConnect中间件进行了身份验证,但在我们完全验证和设置他们的帐户之前,他们没有"active“用户声明。因此,已经对新用户和活动用户进行了身份验证。我希望防止新用户访问大部分应用程序。每次他们试图到达https://app.example.com/dashboard时,我都想将他们重定向到一个https://app.example.com/newuser页面,他们可以从该页面进行设置过程。

--我可以在控制器上使用授权策略来检查是否存在“活动”用户声明并允许访问。当一个新用户没有这个声明,并且授权失败时,我希望授权处理程序有一些逻辑,然后将他们重定向到他们可以访问的应用程序的某个区域。但是我不知道如何使用ASPNET核心中的授权框架来实现这一点。

有一个有点笨重的解决方案,它使用CookieMiddleware并为OnRedirectToAccessDenied事件实现了一个处理程序--参见https://github.com/aspnet/Mvc/issues/4890。我还考虑过实现一个动作过滤器,它可以在每个请求上运行。

我只是在这里太蠢了吗?当然,想要对授权失败执行一些操作是有意义的,这不仅是为了让用户重新进行身份验证。

EN

回答 1

Stack Overflow用户

发布于 2017-08-05 16:37:51

经过一些挖掘和参考的精彩书,临ASP.NET核心MVC (第6版,亚当弗里曼),我的问题的简单答案是创建一个授权过滤器。它使用单个方法实现IAuthorizationFilter ( OnAuthorization(AuthorizationFilterContext上下文))。在这个方法中,做任何您需要做的检查请求。如果授权失败,只需将context.Result属性设置为某些IActionResult,在我的示例中是RedirectToActionResult。如果请求通过授权,则什么也不做。

您也可以在过滤器中使用依赖注入--太棒了。

没有提到如何在Microsoft ASP.NET文档站点上为ASP.NET实现或编写示例。感谢亚当·弗里曼。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45509612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档