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

我想在数据库中存储刷新令牌

井旺
2023-03-14

@覆盖受保护的无效成功身份验证(HttpServletRequest请求、HttpServlet响应、FilterChain链、身份验证身份验证)抛出IOException、ServletException{

    User user = (User) authentication.getPrincipal();
    log.info("User {} is Login Success",user.getUsername());
    Algorithm algorithm = Algorithm.HMAC256("secret".getBytes());

    String accessToken = JWT.create()
            // 사용자에 대해 식별할수 있는것 unique
            .withSubject(user.getUsername())
            .withExpiresAt(new Date(System.currentTimeMillis() + 10 * 60 * 1000 ))
            .withIssuer(request.getRequestURL().toString())
            .withClaim("roles",user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()))
            .sign(algorithm);

    String refreshToken = JWT.create()
            // 사용자에 대해 식별할수 있는것 unique
            .withSubject(user.getUsername())
            .withExpiresAt(new Date(System.currentTimeMillis() + 60 * 60 * 1000 ))
            .withIssuer(request.getRequestURL().toString())
            .sign(algorithm);

//响应。setHeader(“accessToken”,accessToken);//回答setHeader(“refreshToken”,refreshToken);

    Map<String, String> tokens = new HashMap<>();
    tokens.put("accessToken", accessToken);
    tokens.put("refreshToken", refreshToken);


    response.setContentType(APPLICATION_JSON_VALUE);
    new ObjectMapper().writeValue(response.getOutputStream(), tokens);

}

成功身份验证正在创建JWT令牌

我想在DB中存储刷新令牌,

我应该如何接近它?

共有1个答案

钱振
2023-03-14

我认为您不应该将它们存储到db中。相反,您可以使用本地存储包,例如Shared首选项。这将您的标识信息存储到本地存储中。这更有用。

 类似资料:
  • > 如果刷新令牌过期,这意味着用户将定期注销,这从业务角度来看是非常不希望的,这可能会损害用户的保留。是否有一种方法可以在不削弱安全性的情况下避免这种情况,例如使刷新令牌成为“永恒的”? 存储和清理刷新令牌表以防止未使用的令牌积累的最佳方式是什么?假设我有以下表结构:、、。如果策略是永远不会使刷新令牌过期,则使它们无效的唯一方法是当用户注销时。但是,用户也可以删除应用程序,丢失或损坏设备,或者因为

  • 我通过上传同名文件并覆盖它来替换谷歌云存储桶中的数据。但是当我在Big query中查询该文件时,它仍然显示旧的数据。如何让Big Query重新获取文件并覆盖数据?

  • 问题内容: 我有一个ac#实体框架应用程序。我正在尝试从代码运行存储过程(没有问题)。它长期运行,大约30分钟。随着过程的进行,我将每个事务的日志写入SQL表。我希望从该应用程序启动该过程,但随后在屏幕上显示登录的最后10条记录,可能每10秒重新查询一次。这将显示进度。 我更改了代码以简化。线程在dispatcherTime_Tick进程上阻塞。看起来存储过程很好。 这就是所谓的服务。 我一直在执

  • 我正在尝试从应用程序服务中获取Google的刷新令牌,但我不能。 日志说 2016-11-04T00:04:25 PID[500]收到的详细请求:获取https://noteappsvr.azurewebsites.net/.auth/login/google?access _ type = offline 2016-11-04t 00:04:25 PID[500]从https://account

  • 我有一个discord机器人,通过连接github repo在heroku中托管,因此我有一个命令,该命令使用作者ID更新sql数据库,当我在PC中进行测试时,它正在更新,但在github中添加文件和新代码后,sql文件没有得到更新这些是代码

  • 问题内容: 因此,在C ++ / C#中,您可以创建标志枚举来保存多个值,并且在数据库中存储单个有意义的整数当然是微不足道的。 在Java中,您有EnumSets,这似乎是在内存中传递枚举的一种很好的方法,但是如何将组合的EnumSet输出为整数进行存储?还有另一种方法可以解决这个问题吗? 问题答案: