当前位置: 首页 > news >正文

黑龙江网上建设局报建网站高中网站制作

黑龙江网上建设局报建网站,高中网站制作,59网站一起做网店女鞋,展示类网站开发费用目录 一、问题描述 二、实现步骤 1、自定义TokenEnhancer 2、配置授权服务器 3、自定义UserDetails的User类 三、参考文档 一、问题描述 Oauth2里默认生成的JWT信息并没有用户信息,在认证授权后一般会返回这一部分信息,我对此进行了改造。 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) -> {Map<String, 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 JwtUser<T> extends User {@ApiModelProperty("账号信息")private T info;@ApiModelProperty("菜单")private List<TreeNode<SysMenu>> 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博客

http://www.yayakq.cn/news/344752/

相关文章:

  • 网站开发开票交税企业网站模板下载
  • 优秀网站页面设计图片邯郸网站制作
  • ftp网站目录郑州网络公司做医疗网站
  • 网站建设文化传播有限公司网站建设的总体设计
  • 宁波网站推广建站百度seo软件曝光行者seo
  • 欧美免费1级做爰片在线观看网站wordpress 高性能
  • 做欧美网站服务器ip域名解析
  • 服装网站建设建议龙华做网站yihe kj
  • 建立自己个人网站怎么建立动画制作软件flash
  • 网站建设制作收费直接找高校研究生做网站行吗
  • 电脑本地网站建设房产中介哪家口碑比较好
  • 做网站客户要提供什么wordpress数据采集
  • 小说网站制作seo入门培训学校
  • 交互效果网站大连企业建站程序
  • 八桂职教网技能大赛2023什么是网站建设与优化
  • 网站建设基础心得营销型网站及原因有哪些方面
  • 网站建设有前景吗杭州知名app技术开发公司
  • 门户网站建设存在的问题wordpress 文章api
  • 微信公众号网站建设wordpress 支持html5
  • 开网站的宣传图片怎么做购物网站页面设计步骤
  • 哪个做砍价活动的网站好云南营销型网站
  • dw做网站如何让背景变得透明专门查大学的网站
  • 网站开发专业就业前景分析宁波互联网
  • 谷歌seo一个月费用需要2万吗兰州企业网站优化
  • 建个网站大概需要多久网站开发的技术难点
  • 成品网站w灬源码1688北京网站备案负责人变更
  • 揭阳市榕城区建设局网站网站安全解决方案
  • 云南省建设厅网站二级建造师软件下载网站制作
  • 黄村网站建设wordpress网站数据库崩溃
  • 网站开发全程实例课本代码网站页面引导怎么做