门户网站需要多少费用,wordpress主题 苏醒,软件外包属于什么行业,石家庄做网站制作目录
一、问题描述
二、实现步骤
1、自定义TokenEnhancer
2、配置授权服务器
3、自定义UserDetails的User类
三、参考文档 一、问题描述
Oauth2里默认生成的JWT信息并没有用户信息#xff0c;在认证授权后一般会返回这一部分信息#xff0c;我对此进行了改造。
Oauth…目录
一、问题描述
二、实现步骤
1、自定义TokenEnhancer
2、配置授权服务器
3、自定义UserDetails的User类
三、参考文档 一、问题描述
Oauth2里默认生成的JWT信息并没有用户信息在认证授权后一般会返回这一部分信息我对此进行了改造。
Oauth 2.0 JWT 默认返回 OAuth2AccessToken 接口的实现类默认实现类是 DefaultOAuth2AccessToken返回字段有 5 个:
access_token表示访问令牌必选项 token_type表示令牌类型该值大小写不敏感必选项默认是 bearer 类型 expires_in表示过期时间单位为秒。如果省略该参数必须其他方式设置过期时间。 refresh_token表示更新令牌用来获取下一次的访问令牌可选项。 scope表示权限范围如果与客户端申请的范围一致此处可省
改造后最终实现效果 可以看到额外信息已添加上。
二、实现步骤
1、自定义TokenEnhancer
public TokenEnhancer customTokenEnhancer() {return (accessToken, authentication) - {MapString, Object additionalInfo new HashMap();Object principal authentication.getPrincipal();try {String s objectMapper.writeValueAsString(principal);Map?, ? map objectMapper.readValue(s, Map.class);/* 移除不需要的属性 */map.remove(accountNonExpired);map.remove(accountNonLocked);map.remove(credentialsNonExpired);map.remove(enabled);additionalInfo.put(data, map);} catch (JsonProcessingException e) {log.error(, e);}((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);return accessToken;};}
2、配置授权服务器 Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {TokenEnhancerChain enhancerChain new TokenEnhancerChain();enhancerChain.setTokenEnhancers(Arrays.asList(customTokenEnhancer(), jwtAccessTokenConverter())); //token转换器DefaultTokenServices tokenServices new DefaultTokenServices();tokenServices.setTokenEnhancer(enhancerChain); //token拓展链tokenServices.setTokenStore(jwtTokenStore()); //采用JWT存储token/* 开启refresh_token */tokenServices.setReuseRefreshToken(true);tokenServices.setSupportRefreshToken(true);endpoints.authenticationManager(authenticationManager).userDetailsService(userDetailsService).tokenStore(jwtTokenStore()) //采用JWT存储token.tokenServices(tokenServices);super.configure(endpoints);}
3、自定义UserDetails的User类
Getter
Setter
ApiModel(登录用户对象)
JsonInclude(JsonInclude.Include.NON_EMPTY)
public class JwtUserT extends User {ApiModelProperty(账号信息)private T info;ApiModelProperty(菜单)private ListTreeNodeSysMenu menus;public JwtUser(String username, String password, Collection? extends GrantedAuthority authorities) {super(username, password, authorities);}public JwtUser(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection? extends GrantedAuthority authorities) {super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);}
}
并自定义UserDetailsService并在返回时返回自定义对象即可。
三、参考文档
https://www.cnblogs.com/kuangdaoyizhimei/p/14279979.html
Spring Security JWT 添加额外信息_jwts增加参数-CSDN博客