小编Sha*_*ank的帖子

每次 Spring Boot 应用程序重新启动时,Jwt 令牌都会失效

我有一个 spring boot 应用程序,它在成功登录时生成 jwt 令牌。并且令牌将返回给用户,但每次重新启动应用程序时令牌都会失效。我在属性文件中存储了一个密钥以供测试。这是我生成它的代码,

public String createToken(String username, String role) {

    Claims claims = Jwts.claims().setSubject(username);
    claims.put("auth", role);
    claims.put("test", "test");

    Date now = new Date();
    Date validity = new Date(now.getTime() + validityInMilliseconds);

    return Jwts.builder()// 
            .setClaims(claims)//
            .setIssuedAt(now)//
            .setExpiration(validity)//
            .signWith(SignatureAlgorithm.HS256, secretKey)//
            .compact(); 
}
Run Code Online (Sandbox Code Playgroud)

即使应用程序重新启动,我也希望验证令牌。任何关于我可能做错的事情的建议都会受到赞赏。

我的配置类

public class JwtTokenFilterConfigurer extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {

    private JwtTokenProvider jwtTokenProvider;

    public JwtTokenFilterConfigurer(JwtTokenProvider jwtTokenProvider) {
        this.jwtTokenProvider = jwtTokenProvider;
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        JwtTokenFilter customFilter = new JwtTokenFilter(jwtTokenProvider);
        http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
    }

}
Run Code Online (Sandbox Code Playgroud)

jwt spring-boot

5
推荐指数
0
解决办法
1072
查看次数

StringEscapeUtils 不处理 utf-8

我有一个这样的字符串

String incoming = "<html> <head></head> <body>  <p><span style=\"font-family: Arial;\">????????? (eff-kha-ri-STOE) T? ?????? (tee-KAH-nis)? M? ??????????.</span></p> </body></html>";
Run Code Online (Sandbox Code Playgroud)

我正在使用 StringEscapeUtils 转义它

import org.apache.commons.text.StringEscapeUtils;
String escaped = StringEscapeUtils.escapeJava(incoming);
Run Code Online (Sandbox Code Playgroud)

结果是

<html> <head></head> <body>  <p><span style=\"font-family: Arial;\">\u0395\u03C5\u03C7\u03B1\u03C1\u03B9\u03C3\u03C4\u03CE (eff-kha-ri-STOE) T\u03B9 \u03BA\u03B1\u03BD\u03B5\u03AF\u03C2 (tee-KAH-nis)? M\u03B5 \u03C3\u03C5\u03B3\u03C7\u03C9\u03C1\u03B5\u03AF\u03C4\u03B5.</span></p> </body></html>
Run Code Online (Sandbox Code Playgroud)

我已经尝试通过获取字节将其转换为 utf-8 但它不起作用,有什么办法可以修复它?

这是我尝试过的:

String s = new String(escaped.getBytes("UTF-8"), "UTF-8");

我还尝试了一个不同的库来转义文本仍然不起作用。

java arrays unicode utf-8 apache-commons

4
推荐指数
1
解决办法
1785
查看次数

标签 统计

apache-commons ×1

arrays ×1

java ×1

jwt ×1

spring-boot ×1

unicode ×1

utf-8 ×1