使用原先 springsecurityoauth2-demo 进行修改整合

将springsecurityoauth2-demo复制一份成 springsecurityoauth2-jwt-demo

  1. 因为用不到redis配置,所以移除pom中的redis依赖
  2. 移除application.properties中的redis连接地址
  3. 移除配置类(config)中的redis配置类

新增JWT的配置

在配置(config)中新建JwtTokenStoreConfig.java
JwtTokenStoreConfig.java

/**
 * @ClassName JwtTokenStoreConfig
 * @Description TODO JwtToken配置类
 * @Author Eternal night
 * @Date 2022/4/2 22:30
 * @Version 1.0
 */
@Configuration
public class JwtTokenStoreConfig {
	/**
	 * 报错信息:Method annotated with @Bean is called directly. Use dependency injection instead.
	 * 原因:未添加@Configuration注解,导致@Bean之间相互调用出错
	 * 解决办法:添加@Configuration
	 */
	@Bean
	public TokenStore jwtTokenStore() {
		return new JwtTokenStore(jwtAccessTokenConverter());
	}
	
	@Bean
	public JwtAccessTokenConverter jwtAccessTokenConverter() {
		JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();
		// 配置JWT使用的秘钥
		accessTokenConverter.setSigningKey("test_key");
		return accessTokenConverter;
	}
}

在AuthorizationServerConfig.java中 注入JWT的token
AuthorizationServerConfig.java

    // 注入JWT信息
	@Autowired
	@Qualifier("jwtTokenStore")
	private TokenStore tokenStore;

配置JWT相对应的存储策略
AuthorizationServerConfig.java

                // 配置存储令牌策略
				.userDetailsService(userService)

配置accessToken,要和jwtToken进行转换
AuthorizationServerConfig.java

				// accessToken要和JWTToken进行转换
				.accessTokenConverter(jwtAccessTokenConverter);

在进行转换之前要引入(注入)JWT的Token
AuthorizationServerConfig.java

	@Autowired
	private JwtAccessTokenConverter jwtAccessTokenConverter;

创建JWT内容增强器
JwtTokenEnhancer.java

/**
 * @ClassName JwtTokenEnhancer
 * @Description TODO JWT内容增强器
 * @Author Eternal night
 * @Date 2022/4/2 23:54
 * @Version 1.0
 */
public class JwtTokenEnhancer implements TokenEnhancer {
	@Override
	public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
		HashMap<String, Object> info = new HashMap<>();
		// info.put(Token,Value);
		info.put("enhance", "enhance info");
		((DefaultOAuth2AccessToken) oAuth2AccessToken).setAdditionalInformation(info);
		return oAuth2AccessToken;
	}
}

在JwtTokenStoreConfig类中添加JwtTokenEnhancer的bean
JwtTokenStoreConfig.java

    @Bean
	public JwtTokenEnhancer jwtTokenEnhancer() {
		return new JwtTokenEnhancer();
	}