【发布时间】:2021-04-09 22:30:13
【问题描述】:
我正在寻找一种在每个控制器的每个方法中执行此操作的方法,即使对于那些不返回 IActionResult 的方法(我将继续讨论):
- Get User.Claim 以获取登录网站的用户信息。
- 检查用户是否在数据库中被阻止(我自己的存储库已经在工作)
- 将用户重定向到显示“您已被阻止”的页面,就像 Exceptions 的工作流程一样。
我已经做出的考虑和尝试:
-
无法从声明中获取此信息以便与 ViewStart 一起使用,因为我需要该块在数据库更新的同一时刻工作。用户退出并登录时的声明。
-
无法通过返回带有 Json 的布尔值的控制器来执行此操作 每个页面,因为用户可以停止重定向
-
我有几个方法可以返回局部视图、对象、列表,除了 IActionResult 之外的任何东西。我不在乎这是否不起作用,原因有两个:
- 应该由通过 ajax 调用的主视图触发。
- 用户无论如何都被阻止了,所以我不在乎它是否看到页面损坏。
-
我的安全工作流程是这样的:
[HttpPost] [Authorize(Policy = "Users")] [Authorize(AuthenticationSchemes = "MyAppScheme")] public IActionResult GetRep() { //Do things }
现在我正在尝试做一个中间件,但我是 NET Core 的新手,所以我也无法编译。也在尝试从 ViewStart 调用我的 userRepository
【问题讨论】:
-
你为什么不使用可以在你的应用程序中全局工作的中间件。动作过滤器将是最佳选择Chekc MS Docs
-
@RabbyHasan 谢谢!是的,我正在尝试,但不知道如何正确完成
标签: c# asp.net asp.net-core asp.net-core-middleware