【问题标题】:¿Is there a way to call a class method on every controller action?¿ 有没有办法在每个控制器动作上调用一个类方法?
【发布时间】:2019-11-13 06:25:53
【问题描述】:

我正在实现一个缓存系统来在服务器端处理我的 JWT 以模拟会话状态,每次调用操作时我都必须验证服务器缓存上的令牌以查看它是否仍然有效,有没有办法创建类似

[Authorize] or [AllowAnonymous] 

要搜索请求并执行所需的任何操作来验证它?我已经有一个处理缓存系统的单例类,我只需要一个简单的方法来调用正确的方法。

我想避免通过依赖注入在每个方法的每个操作上调用该方法。

我正在使用 Net Core 3.0、分布式缓存和带有 JWT 验证的 Web API。

谢谢。

【问题讨论】:

  • 你可以使用中间件,以我的回答here(向下滚动查看asp.net core 3.0)为例。
  • 对我来说太愚蠢了,只是一个愚蠢的问题,如果我添加一个中间件,有没有办法在某些条件下避免过滤器?例如,一旦您尝试登录,我就不需要验证会话,谢谢。
  • 如果这就是你的意思,你不能跳过中间件。但是您可以检查中间件内部的某个条件,例如if (context.User?.Identity.IsAuthenticated = true).
  • 谢谢你们,我使用了这两种解决方案,但我觉得我对过滤器解决方案有更多的控制权,有没有办法给你们两个投票?

标签: asp.net-core .net-core-3.0


【解决方案1】:

您需要实现一个动作过滤器。详情请见the documentation

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 2020-04-07
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2021-10-13
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多