【发布时间】:2017-08-04 14:41:14
【问题描述】:
在“旧”ASP.NET 中,我可以构建自定义授权属性并覆盖 HandleUnauthorizedRequest。我似乎无法使用自定义授权处理程序对 ASP.NET Core 执行此操作。后者“成功”或“失败”,我想根据失败的性质重定向到替代控制器操作。
场景如下。 我的网络应用程序的用户有一个声明,表明他们是“活跃”用户,即他们已经完全注册并且我们已经验证了他们的详细信息等。新用户已经过身份验证使用 OpenIdConnect 中间件,但在我们完全验证并设置他们的帐户之前,不要拥有“活动”用户声明。因此,新用户和活动用户都已通过身份验证。我想阻止新用户访问大部分应用程序。每次他们尝试访问 https://app.example.com/dashboard 时,我都想将他们重定向到 https://app.example.com/newuser 页面,他们可以从中完成设置过程。
我可以在我的控制器上使用授权策略来检查是否存在“活动”用户声明并允许访问。当新用户没有此声明并且授权失败时,我希望授权处理程序具有一些逻辑,然后将他们重定向到他们有权访问的应用程序区域。但是我看不到如何使用 ASPNET 核心中的授权框架来做到这一点。
有一个有点笨拙的解决方案,它使用 CookieMiddleware 并为 OnRedirectToAccessDenied 事件实现处理程序 - 请参阅 https://github.com/aspnet/Mvc/issues/4890。我还考虑过实现一个针对每个请求运行的操作过滤器。
我只是在这里愚蠢吗?当然,想要对授权失败执行一些操作是有意义的,而不仅仅是让用户重新进行身份验证。
【问题讨论】:
标签: asp.net asp.net-mvc