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

章贡区网站建设如何开wordpress网站

章贡区网站建设,如何开wordpress网站,建筑设计网站app,网站视频插件目录 前言1. 基本知识2. Demo3. 实战 前言 java框架 零基础从入门到精通的学习路线 附开源项目面经等#xff08;超全#xff09;【Java项目】实战CRUD的功能整理#xff08;持续更新#xff09; 1. 基本知识 JwtAccessTokenConverter 是 Spring Security OAuth2 中的一… 目录 前言1. 基本知识2. Demo3. 实战 前言 java框架 零基础从入门到精通的学习路线 附开源项目面经等超全【Java项目】实战CRUD的功能整理持续更新 1. 基本知识 JwtAccessTokenConverter 是 Spring Security OAuth2 中的一个重要组件主要用于生成和验证 JSON Web Token (JWT) JWT 的结构 JWT 由三部分组成头部Header、负载Payload和签名Signature 头部通常包含令牌的类型JWT和签名算法如 HMAC SHA256 负载部分包含声明Claims即与用户相关的信息例如权限、过期时间等 签名是使用头部和负载生成的用于验证令牌的完整性 类继承关系 JwtAccessTokenConverter 继承自 AbstractTokenConverter并实现了 AccessTokenConverter 接口 该类负责将 OAuth2 访问令牌与 JWT 进行转换和处理 主要方法 encode用于生成 JWT接受 OAuth2AccessToken 和 OAuth2Authentication 参数 decode用于解析和验证 JWT返回 OAuth2AccessToken 实例 常用的几个类如下 Access Token OAuth2 中的访问令牌用于授权客户端访问受保护资源 JWT 是一种常用的访问令牌格式 OAuth2Authentication 封装与用户相关的身份验证信息包括用户的身份和权限 Additional Information JWT 中可以包含附加信息通常用于存储用户 ID、用户名、权限等自定义字段 2. Demo 签名密钥在 main 方法中使用 demo.setSigningKey(signingKey); 设置签名密钥以确保生成的 JWT 是安全的 用户权限和身份验证使用 SimpleGrantedAuthority 创建用户的角色并通过 TestingAuthenticationToken 实现身份验证 OAuth2AccessToken创建访问令牌附加用户 ID、用户名和权限信息 JWT 生成与解码调用 encode 方法生成 JWT然后使用 Base64 解码打印出 JWT 的头部和负载部分 常用的xml配置文件如下 !-- https://mvnrepository.com/artifact/org.springframework.security.oauth/spring-security-oauth2 -- dependencygroupIdorg.springframework.security.oauth/groupIdartifactIdspring-security-oauth2/artifactIdversion2.5.0.RELEASE/version /dependency dependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-jwt/artifactIdversion1.1.0.RELEASE/version !-- 确保版本与 Spring Security 兼容 -- /dependency执行代码如下 package JwtDemo;import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; import org.springframework.security.oauth2.common.OAuth2AccessToken; import org.springframework.security.oauth2.common.exceptions.InvalidTokenException; import org.springframework.security.oauth2.provider.OAuth2Request; import org.springframework.security.oauth2.provider.token.TokenStore; import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;import java.util.*;public class JwtDemo extends JwtAccessTokenConverter {public static void main(String[] args) {JwtDemo demo new JwtDemo();String signingKey your-signing-key; // 请替换为你的签名密钥demo.setSigningKey(signingKey);// 创建用户权限SetSimpleGrantedAuthority authorities new HashSet();authorities.add(new SimpleGrantedAuthority(ROLE_USER));// 创建 OAuth2RequestOAuth2Request request new OAuth2Request(null, client_id,authorities, true, null, null, null, null, null);// 创建 AuthenticationAuthentication authentication new TestingAuthenticationToken(user, password, authorities);// 创建 OAuth2AuthenticationOAuth2Authentication oauth2Authentication new OAuth2Authentication(request, authentication);// 创建 OAuth2AccessToken 实例DefaultOAuth2AccessToken token new DefaultOAuth2AccessToken(your-jwt-token);MapString, Object additionalInformation new HashMap();additionalInformation.put(user_id, 12345); // 添加用户信息additionalInformation.put(user_name, user); // 添加用户名additionalInformation.put(authorities, authorities); // 添加权限token.setAdditionalInformation(additionalInformation);// 使用 JwtDemo 生成 JWTString jwt demo.encode(token, oauth2Authentication);System.out.println(生成的 JWT: jwt);String[] chunks jwt.split(\\.);Base64.Decoder decoder Base64.getUrlDecoder();try {String header new String(decoder.decode(chunks[0]));String payload new String(decoder.decode(chunks[1]));System.out.println(Header: header);System.out.println(Payload: payload);} catch (IllegalArgumentException e) {System.err.println(解码时出错: e.getMessage());}} }// 自定义的 Authentication 实现 class TestingAuthenticationToken extends org.springframework.security.authentication.UsernamePasswordAuthenticationToken {public TestingAuthenticationToken(Object principal, Object credentials, Collection? extends GrantedAuthority authorities) {super(principal, credentials, authorities);} }截图如下 3. 实战 已Bledex源码实战为例 Configuration // 标记为配置类Spring会自动扫描并加载 ConditionalOnProperty(prefix blade.security.oauth2, name storeType, havingValue jwt, matchIfMissing true) // 当配置中 blade.security.oauth2.storeType 为 jwt 时才加载此配置类 public class JwtTokenStoreConfiguration {/*** 使用 jwtTokenStore 存储 token*/Bean // 将方法的返回值注册为 Spring 的 Beanpublic TokenStore jwtTokenStore(JwtProperties jwtProperties) {// 创建 JwtTokenStore 实例并传入 JwtAccessTokenConverterreturn new JwtTokenStore(jwtAccessTokenConverter(jwtProperties));}/*** 用于生成 jwt*/Bean // 将方法的返回值注册为 Spring 的 Beanpublic JwtAccessTokenConverter jwtAccessTokenConverter(JwtProperties jwtProperties) {JwtAccessTokenConverter accessTokenConverter new JwtAccessTokenConverter();// 设置 JWT 签名密钥accessTokenConverter.setSigningKey(jwtProperties.getSignKey());return accessTokenConverter; // 返回配置好的 JwtAccessTokenConverter}/*** 用于扩展 jwt*/BeanConditionalOnMissingBean(name jwtTokenEnhancer) // 当 Spring 容器中没有名为 jwtTokenEnhancer 的 Bean 时才加载此 Beanpublic TokenEnhancer jwtTokenEnhancer(JwtAccessTokenConverter jwtAccessTokenConverter, JwtProperties jwtProperties) {// 创建并返回自定义的 TokenEnhancerreturn new BladeJwtTokenEnhancer(jwtAccessTokenConverter, jwtProperties);}}对应的自定义类如下 AllArgsConstructor // 自动生成一个包含所有字段的构造函数 public class BladeJwtTokenEnhancer implements TokenEnhancer {private final JwtAccessTokenConverter jwtAccessTokenConverter; // JWT 访问令牌转换器private final JwtProperties jwtProperties; // JWT 配置属性Overridepublic OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {// 从身份验证对象中获取用户的详细信息BladeUserDetails principal (BladeUserDetails) authentication.getUserAuthentication().getPrincipal();// token 参数增强MapString, Object info new HashMap(16); // 创建一个新的 HashMap 用于存储附加信息info.put(TokenUtil.CLIENT_ID, TokenUtil.getClientIdFromHeader()); // 获取客户端 IDinfo.put(TokenUtil.USER_ID, Func.toStr(principal.getUserId())); // 获取用户 IDinfo.put(TokenUtil.DEPT_ID, Func.toStr(principal.getDeptId())); // 获取部门 IDinfo.put(TokenUtil.POST_ID, Func.toStr(principal.getPostId())); // 获取职位 IDinfo.put(TokenUtil.ROLE_ID, Func.toStr(principal.getRoleId())); // 获取角色 IDinfo.put(TokenUtil.TENANT_ID, principal.getTenantId()); // 获取租户 IDinfo.put(TokenUtil.OAUTH_ID, principal.getOauthId()); // 获取 OAuth IDinfo.put(TokenUtil.ACCOUNT, principal.getAccount()); // 获取账户信息info.put(TokenUtil.USER_NAME, principal.getUsername()); // 获取用户名info.put(TokenUtil.NICK_NAME, principal.getName()); // 获取昵称info.put(TokenUtil.REAL_NAME, principal.getRealName()); // 获取真实姓名info.put(TokenUtil.ROLE_NAME, principal.getRoleName()); // 获取角色名称info.put(TokenUtil.AVATAR, principal.getAvatar()); // 获取用户头像info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME); // 获取许可证名称((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info); // 将附加信息设置到访问令牌中// token 状态设置if (jwtProperties.getState()) {// 如果 JWT 状态为 true则增强访问令牌OAuth2AccessToken oAuth2AccessToken jwtAccessTokenConverter.enhance(accessToken, authentication);String tokenValue oAuth2AccessToken.getValue(); // 获取增强后的 token 值String tenantId principal.getTenantId(); // 获取租户 IDString userId Func.toStr(principal.getUserId()); // 获取用户 ID// 将访问令牌存储到 JwtUtil 中以便后续管理JwtUtil.addAccessToken(tenantId, userId, tokenValue, accessToken.getExpiresIn());}return accessToken; // 返回增强后的访问令牌} }
文章转载自:
http://www.morning.rmkyb.cn.gov.cn.rmkyb.cn
http://www.morning.mslhq.cn.gov.cn.mslhq.cn
http://www.morning.fsqbx.cn.gov.cn.fsqbx.cn
http://www.morning.fbdtd.cn.gov.cn.fbdtd.cn
http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn
http://www.morning.wqmpd.cn.gov.cn.wqmpd.cn
http://www.morning.pphbn.cn.gov.cn.pphbn.cn
http://www.morning.sxwfx.cn.gov.cn.sxwfx.cn
http://www.morning.qyglt.cn.gov.cn.qyglt.cn
http://www.morning.mydgr.cn.gov.cn.mydgr.cn
http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn
http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn
http://www.morning.sqfnx.cn.gov.cn.sqfnx.cn
http://www.morning.cnyqj.cn.gov.cn.cnyqj.cn
http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn
http://www.morning.qsy39.cn.gov.cn.qsy39.cn
http://www.morning.pgrsf.cn.gov.cn.pgrsf.cn
http://www.morning.hwxxh.cn.gov.cn.hwxxh.cn
http://www.morning.hchrb.cn.gov.cn.hchrb.cn
http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn
http://www.morning.frtb.cn.gov.cn.frtb.cn
http://www.morning.qfqld.cn.gov.cn.qfqld.cn
http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn
http://www.morning.wgxtz.cn.gov.cn.wgxtz.cn
http://www.morning.hytfz.cn.gov.cn.hytfz.cn
http://www.morning.ggjlm.cn.gov.cn.ggjlm.cn
http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn
http://www.morning.knmp.cn.gov.cn.knmp.cn
http://www.morning.mrttc.cn.gov.cn.mrttc.cn
http://www.morning.redhoma.com.gov.cn.redhoma.com
http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn
http://www.morning.bpmmq.cn.gov.cn.bpmmq.cn
http://www.morning.yrjfb.cn.gov.cn.yrjfb.cn
http://www.morning.ktrh.cn.gov.cn.ktrh.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.npmpn.cn.gov.cn.npmpn.cn
http://www.morning.qmsbr.cn.gov.cn.qmsbr.cn
http://www.morning.hhboyus.cn.gov.cn.hhboyus.cn
http://www.morning.pmsl.cn.gov.cn.pmsl.cn
http://www.morning.qfkdt.cn.gov.cn.qfkdt.cn
http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn
http://www.morning.msgnx.cn.gov.cn.msgnx.cn
http://www.morning.qgkcs.cn.gov.cn.qgkcs.cn
http://www.morning.kpgbz.cn.gov.cn.kpgbz.cn
http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn
http://www.morning.lbggk.cn.gov.cn.lbggk.cn
http://www.morning.pkdng.cn.gov.cn.pkdng.cn
http://www.morning.ntyks.cn.gov.cn.ntyks.cn
http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn
http://www.morning.wwthz.cn.gov.cn.wwthz.cn
http://www.morning.tssmk.cn.gov.cn.tssmk.cn
http://www.morning.fplwz.cn.gov.cn.fplwz.cn
http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn
http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn
http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn
http://www.morning.frpb.cn.gov.cn.frpb.cn
http://www.morning.wmfr.cn.gov.cn.wmfr.cn
http://www.morning.fsfz.cn.gov.cn.fsfz.cn
http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn
http://www.morning.dqwykj.com.gov.cn.dqwykj.com
http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn
http://www.morning.dwncg.cn.gov.cn.dwncg.cn
http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn
http://www.morning.xhpnp.cn.gov.cn.xhpnp.cn
http://www.morning.rnyhx.cn.gov.cn.rnyhx.cn
http://www.morning.nxstj.cn.gov.cn.nxstj.cn
http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn
http://www.morning.huarma.com.gov.cn.huarma.com
http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn
http://www.morning.sryhp.cn.gov.cn.sryhp.cn
http://www.morning.mfct.cn.gov.cn.mfct.cn
http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn
http://www.morning.qlhwy.cn.gov.cn.qlhwy.cn
http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn
http://www.morning.bpzw.cn.gov.cn.bpzw.cn
http://www.morning.dtrz.cn.gov.cn.dtrz.cn
http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn
http://www.morning.mpxbl.cn.gov.cn.mpxbl.cn
http://www.morning.dxzcr.cn.gov.cn.dxzcr.cn
http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn
http://www.tj-hxxt.cn/news/262759.html

相关文章:

  • php企业网站建设东山县建设银行网站
  • 个人站长做哪些网站好如何制作网址快捷方式
  • 重庆公司专业建站学做古装网站
  • 建企业网站 硬件萧山区住房和城乡建设局网站
  • 某企业集团网站建设方案网站建设总结 优帮云
  • 烟台网站制作山海云服务器网站目录
  • wordpress手机网站模版品牌手机网站开发
  • 网站建设完不管了自己怎么接手wordpress打字不显示
  • 应聘网站开发的自我介绍十大品牌网站
  • 苏州专业网站设计制作公司南宁哪里有seo推广厂家
  • 网站建设与管理小论文南京专业网站营销
  • 建设网站必须要配置apache吗网站开发维护者
  • 移动网站 案例郑州网站建设与设计
  • 运营网站求个网站你懂我的意思吗
  • 网站建设进度巴中免费网站建设
  • 有没有做网站一次付费权重7以上的网站
  • 中国万网网站空间申请wordpress相关的网站
  • 厦门网页建站申请费用sem竞价推广
  • 大同做网站游戏网站建设计划书
  • 钢材销售都在哪个网站做网站开发主要内容和要求
  • 郴州北京网站建设大屏可视化ui设计
  • 样本之家登录网站天津市住房和城乡建设局网站
  • 网站建设 中企动力烟台沙洋网站定制
  • 网站建设 源美设计网站动态背景怎么做
  • 为公司制作网站线上培训网站开发
  • 新浪云怎么做自己的网站网件路由器r7000
  • 网站关键词优化合同wordpress七牛云储存怎么
  • 哪些网站可以做平面设计苏州有什么公司
  • 网站论坛模板下载网站建设在哪能看
  • 合肥网站建设技术托管如何自建公司网站