当前位置: 首页 > 知识库问答 >
问题:

如何在不重写方法的情况下检查Rest控制器中每个Rest API中的授权令牌

贺宝
2023-03-14

我正在Spring Boot(Maven)中构建一个Rest控制器,我想让我的API有一个授权承载令牌,如果令牌无效,我可以在其中发送401响应,但我不想手动检查我创建的每个API,有没有一种方法可以让我在实际运行API之前运行一个检查令牌是否有效的方法。

如果令牌无效,我想发送401,而不是API的目的。

共有1个答案

古彦
2023-03-14

您可以创建一个自定义过滤器(实现javax.servlet.filter),它将拦截每个传入的请求,您可以在其中检查请求是否有授权头。

@Component
public class AuthFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if (req.getHeader("Authorization") != null){ //or replace with a further fine grained condition
            chain.doFilter(request, response);
        } else {
            HttpServletResponse res = (HttpServletResponse) response;
            res.setStatus(401);
        }
    }
}
 类似资料:
  • 我的身份验证服务返回由Spring身份验证解析器生成的x-auth令牌,我的令牌存储库是redis。因此用户应该使用此服务进行身份验证,然后使用其他服务。 我的所有其他服务都连接到相同的redis实例,因此当它们接收到x-auth令牌时,它们可以获得用户会话详细信息。我通常使用注释来进行授权,然后指定可以访问控制器或方法的角色。 到目前为止一切正常。然后我被要求在这个架构中添加速率限制功能。因此,

  • 本文向大家介绍Spring Security 控制授权的方法,包括了Spring Security 控制授权的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Spring Security 控制授权的方法,分享给大家,具体如下: 使用授权方法进行授权配置 每一个 Spring Security 控制授权表达式(以下简称为表达式)实际上都在在 API 中对应一个授权方法,该方法是请求的 UR

  • 这是我写的主活动的代码。我正在加载第一个屏幕中的片段列表。当用户点击任何列表项时,行星名称将在我在单独的类中定义的详细片段中显示给用户。 我正在添加“碎片行星列表”事务- 然而,如果我重写backPress方法并以编程方式弹出后栈,它就可以正常工作。 如果要实现此行为,是否需要以这种方式重写onBackPressed()方法?未记录您需要在此链接中重写此方法。Android背压片段文档 碎片行星细

  • 有什么方法可以让访问部署的云运行应用程序变得更有趣吗? PS:我不想把应用程序放在我们的cluser中-所以这里只有完全管理是一个选项

  • 这是我第二次使用它,也是我第一次得到非常好的帮助,所以我希望我能得到更多的帮助! 背景: 我的程序通过创建一个保存余额和其他东西的对象来测试我的 类。说明说我需要覆盖子类的“提款”和“存款”方法以跟踪交易。 我这样做了,但它不使用当前余额,而是只发送一个0。我希望能够保留新的余额,以便它实际从当前余额中提取或存款。 抱歉,如果这毫无意义,如果需要任何澄清,我将尝试以不同的方式解释。 以下是我的代码

  • 问题内容: 每次我学习有关php的新知识时,我都不得不重写代码(例如,mysql连接无法在会话中作为句柄传递的事实),我感到很烦。 如何在项目中实现mysql连接?很多人提出了“连接池”,但是在阅读了手册之后,我仍然迷路了。就像:“连接池是mysql_pconnect!” -我:“和…?实际上有什么不同?您可以在会话中传递mysql_pconnect吗?为什么这看似神秘的光环?” 让我解释一下我的