【问题标题】:add Authorization token using Feign client使用 Feign 客户端添加授权令牌
【发布时间】:2020-12-16 20:44:09
【问题描述】:

我有两个服务连接到注册表,其中一个需要从另一个查询一些数据,需要将令牌传递给端点。

我尝试了以下方法,但没有成功,端点就像没有提供令牌一样。

    @GetMapping("/api/users/find")
    @Headers("Authorization: Bearer {token}")
    Optional<UserDTO> findUserByEmail(
        @Param("token") String token, @RequestParam("email") String email);
    @GetMapping("/api/users/find")
    Optional<UserDTO> findUserByEmail(
        @RequestHeaders("Authorization") String token, @RequestParam("email") String email);
    @GetMapping("/api/users/find")
    Optional<UserDTO> findUserByEmail(
        @HeaderMap Map<String, Object> headers , @RequestParam("email") String email);

【问题讨论】:

  • 您的标题谈到 FeignClient,但您只显示来自服务器的代码。为什么要修改接收端的代码,JHipster 的默认安全配置应该需要 JWT,不需要更改;只有调用者应该改变。您如何使用 SecurityUtils.getCurrentUserJWT() 在调用者中检索令牌?您是否使用 swagger 或 curl 测试了您的端点?

标签: java spring jwt jhipster feign


【解决方案1】:

应该像 @RequestHeader(value = "Authorization") String authorization 这样工作,但要确保传递正确的值,必须是 Bearer token 之类的东西。

【讨论】:

    【解决方案2】:

    你的这段代码是绝对正确的。

        @GetMapping("/api/users/find")
        Optional<UserDTO> findUserByEmail(
        @RequestHeaders("Authorization") String token, @RequestParam("email") String email);
    

    当你调用这个特定方法时,在令牌的值前面添加“Bearer”

    token = "Bearer " + token;
    findUserByEmail(token,email);
    

    【讨论】:

    • 谢谢你,这是我所缺少的
    猜你喜欢
    • 2020-01-24
    • 2018-10-14
    • 2018-12-01
    • 2019-02-18
    • 2017-10-18
    • 1970-01-01
    • 2023-01-29
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多