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

网站二维码可以做长按识别吗男装网站的网站建设背景

网站二维码可以做长按识别吗,男装网站的网站建设背景,源码快速建站,什么平台发广告最有效整合JWT 令牌组成 1.标头(Header)2.有效载荷(Payload)3.签名(Signature) 因此#xff0c;JWT通常如下所示:xxxxx.yyyyy.zzzzz Header.Payload.Signature jwt组成 Header 标头通常由两部分组成#xff1a;令牌的类型#xff08;即JWT#xff09;和所使用的签名算法JWT通常如下所示:xxxxx.yyyyy.zzzzz Header.Payload.Signature jwt组成 Header 标头通常由两部分组成令牌的类型即JWT和所使用的签名算法例如HMAC SHA256或RSA。它会使用 Base64 编码组成 JWT 结构的第一部分。 注意:Base64是一种编码也就是说它是可以被翻译回原来的样子来的。它并不是一种加密过程。 {alg: HS256,typ: JWT }Payload 不要在这里放密码反编译Base64即可解码 令牌的第二部分是有效负载其中包含声明。声明是有关实体通常是用户和其他数据的声明。同样的它会使用 Base64 编码组成 JWT 结构的第二部分 {username: xzxadmin,datetime: 2023-05-01 11:11:11,role: admin }Signature 前面两部分都是使用 Base64 进行编码的即前端可以解开知道里面的信息。Signature 需要使用编码后的 header 和 payload以及我们提供的一个密钥然后使用 header 中指定的签名算法HS256进行签名。签名的作用是保证 JWT 没有被篡改过如: HMACSHA256(base64UrlEncode(header) “.” base64UrlEncode(payload),secret); 整合JWT !--引入jwt-- dependencygroupIdcom.auth0/groupIdartifactIdjava-jwt/artifactIdversion3.4.0/version /dependencyJWT帮助类 public class JwtUtils {//常量public static final long time 1000 * 60 * 60 * 24;//token过期时间public static final String APP_SECRET ukc8BDbRigUDaY6pZFfWus2jZWLPHO;//秘钥//生成token字符串的方法public static String getJwtToken(String username, String role){String JwtToken Jwts.builder()//头部.setHeaderParam(typ,JWT).setHeaderParam(alg,HS256)//载荷.claim(username,username).claim(role,role).setSubject(jwt-user)//token过期时间1小时.setExpiration(new Date(System.currentTimeMillis()time )).setId(UUID.randomUUID().toString())//id字段//签名.signWith(SignatureAlgorithm.HS256,APP_SECRET)//签名加密算法和//连接字符串(.).compact();return JwtToken;}/*** 判断token是否存在与有效* param jwtToken* return*/public static boolean checkToken(String jwtToken) {if(StringUtils.isEmpty(jwtToken)) return false;try {Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);} catch (Exception e) {e.printStackTrace();return false;}return true;}/*** 判断token是否存在与有效* param request* return*/public static boolean checkToken(HttpServletRequest request) {try {String jwtToken request.getHeader(token);if(StringUtils.isEmpty(jwtToken)) return false;Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);} catch (Exception e) {e.printStackTrace();return false;}return true;}/*** 根据token获取会员id* param request* return*/public static String getMemberIdByJwtToken(HttpServletRequest request) {String jwtToken request.getHeader(token);if(StringUtils.isEmpty(jwtToken)) return ;JwsClaims claimsJws Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);Claims claims claimsJws.getBody();return (String)claims.get(id);} } 整合JWT 导入依赖 !--引入jwt-- dependencygroupIdcom.auth0/groupIdartifactIdjava-jwt/artifactIdversion3.4.0/version /dependency!--引入mybatis-- dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.3/version /dependency!--引入lombok-- dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.12/version /dependency!--引入druid-- dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.19/version /dependency!--引入mysql-- dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.38/version /dependency配置文件 server.port8989 spring.application.namejwtspring.datasource.typecom.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-namecom.mysql.jdbc.Driver spring.datasource.urljdbc:mysql://127.0.0.1:3306/jwt?useUnicodetruecharacterEncodingutf8useSSLtrueserverTimezoneUTCuseSSLfalse spring.datasource.usernameroot spring.datasource.password1234mybatis.type-aliases-packagecom.zuhao.springbootjwt.entity mybatis.mapper-locationsclasspath:com/zuhao/springbootjwt/mapper/*.xmllogging.level.com.zuhao.springbootjwt.daodebugJWT拦截器 interceptor包下新建拦截器 Component Slf4j public class LoginCheckInterceptor implements HandlerInterceptor {//目标资源方法执行前执行。 返回true放行 返回false不放行Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//1,先获取请求头String token request.getHeader(Authorization);System.out.println(token:token);response.setContentType(application/json;charset UTF-8);ObjectMapper mapper new ObjectMapper();//2,判断请求头是否存在if (token null || .equals(token)){//请求头不存在或者请求头为空log.info(...token不存在);response.getWriter().write(result:缺少token);return false;}else{try {boolean isJwt JwtUtils.checkToken(token);//解析不出错就是格式有效/*从redis中查询token*///时间有效通过时间无效过期} catch (Exception e) {log.info(请求头不正确!!);response.getWriter().write(result:token错误:);return false;}}return true;}//下面与登录无关,不用写//目标资源方法执行后执行Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(postHandle ... );}//视图渲染完毕后执行最后执行Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(afterCompletion .... );} } config包下添加拦截器 Configuration public class WebConfig implements WebMvcConfigurer {Autowiredprivate LoginCheckInterceptor loginCheckInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {//定义拦截对象registry.addInterceptor(loginCheckInterceptor).addPathPatterns(/**).excludePathPatterns(/users/login,/users/login/**,/swagger-ui/,/swagger-ui/**,/swagger-resources,/swagger-resources/**,/v3/**,/users/hello);} }
http://www.huolong8.cn/news/295993/

相关文章:

  • 泉州公司网站模板建站趣头条自媒体平台注册
  • 响应式网站建设相机拍照的图片怎么做网站呀
  • 手机网站自助建设百度公司地址
  • 柳州网站建设2023恢复全员核酸
  • 长春自助建站系统织梦网站挂马教程
  • 谁会在阿里云建网站wordpress评论显示游客
  • 创业网站怎么做的杭州论坛网
  • metro网站模板求职简历在哪个网站做
  • 哪里有免费的网站网址甘肃省通信管理局 网站备案
  • 营销网站开发找哪家抚州网站建设
  • 新网网站空间购买企信网官网查询入口
  • 网站刚刚开始怎么做58创业加盟网
  • 网站建设需要注意的问题小黄豆crm
  • 东营网站建设推广wordpress表情不显示
  • 网站建设hengfengera分销商城与基础商城的区别
  • 网页制作成品网站wordpress邀请码教程
  • 天津网站建设哪家公司好html标签属性
  • 枣庄手机网站建设wordpress图片不被收录
  • 织梦网站导航固定沈阳大熊网站建设制作
  • 做网站商标分类seo网站推广策略
  • 中国建设银行网站缺点青岛官网优化
  • 老河口市网站wordpress有什么插件
  • 技术社区网站开发例子如何自己做解析网站
  • 最新网站域名ip地址查询网站开发php工程师
  • 上海免费做网站公司建盏茶杯知识
  • 做国外订单用哪个网站登錄wordpress界面
  • 网站建设软件免费如何制作简易 网站
  • 宁波哪家建网站hao关键词网站
  • 莱州网站开发网站 美食频道 建设
  • 制作网站的网址毕业设计网站用什么做