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

图片手机网站建设电商平台推广方式有哪些

图片手机网站建设,电商平台推广方式有哪些,竭诚网络网站建设,做资源网站 文件能存储到云盘吗全局token验证 简介 ​通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用…

全局token验证

简介

​通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输。JWT的认证流程如下:

前端通过Web表单将自己的用户名和密码发送到后端的接口,这个过程一般是一个POST请求。建议的方式是通过SSL加密的传输(HTTPS),从而避免敏感信息被嗅探

后端核对用户名和密码成功后,将包含用户信息的数据作为JWT的Payload,将其与JWT Header分别进行Base64编码拼接后签名,形成一个JWT Token,形成的JWT Token就是一个如同lll.zzz.xxx的字符串

由一下可以实现全局的token验证,无需再其余地方进行验证token。

jwt实现

public class AppJwtUtil {// TOKEN的有效期一天(S)private static final int TOKEN_TIME_OUT = 3_600;// 加密KEYprivate static final String TOKEN_ENCRY_KEY = "MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY";// 最小刷新间隔(S)private static final int REFRESH_TIME = 300;// 生产IDpublic static String getToken(Long id){Map<String, Object> claimMaps = new HashMap<>();claimMaps.put("id",id);long currentTime = System.currentTimeMillis();return Jwts.builder().setId(UUID.randomUUID().toString()).setIssuedAt(new Date(currentTime))  //签发时间.setSubject("short-chain")  //说明.setIssuer("zh") //签发者信息.setAudience("app")  //接收用户.compressWith(CompressionCodecs.GZIP)  //数据压缩方式.signWith(SignatureAlgorithm.HS512, generalKey()) //加密方式.setExpiration(new Date(currentTime + TOKEN_TIME_OUT * 1000))  //过期时间戳.addClaims(claimMaps) //cla信息.compact();}//临时tokenpublic static String getToken( ){Map<String, Object> claimMaps = new HashMap<>();long currentTime = System.currentTimeMillis();return Jwts.builder().setId(UUID.randomUUID().toString()).setIssuedAt(new Date(currentTime))  //签发时间.setSubject("short-chain")  //说明.setIssuer("zh") //签发者信息.setAudience("app")  //接收用户.compressWith(CompressionCodecs.GZIP)  //数据压缩方式.signWith(SignatureAlgorithm.HS512, generalKey()) //加密方式.setExpiration(new Date(currentTime + TOKEN_TIME_OUT/60 ))  //过期时间戳.addClaims(claimMaps) //cla信息.compact();}public static String getAppkey( ){Map<String, Object> claimMaps = new HashMap<>();long currentTime = System.currentTimeMillis();return Jwts.builder().setId(UUID.randomUUID().toString()).setIssuedAt(new Date(currentTime))  //签发时间.setSubject("short-chain")  //说明.setIssuer("zh") //签发者信息.setAudience("app")  //接收用户.compressWith(CompressionCodecs.GZIP)  //数据压缩方式.signWith(SignatureAlgorithm.HS512, generalKey()) //加密方式.setExpiration(new Date(currentTime + TOKEN_TIME_OUT*60000000000L ))  //过期时间戳.addClaims(claimMaps) //cla信息.compact();}/*** 获取token中的claims信息** @param token* @return*/private static Jws<Claims> getJws(String token) {return Jwts.parser().setSigningKey(generalKey()).parseClaimsJws(token);}/*** 获取payload body信息** @param token* @return*/public static Claims getClaimsBody(String token) {try {return getJws(token).getBody();}catch (ExpiredJwtException e){return null;}}/*** 获取hearder body信息** @param token* @return*/public static JwsHeader getHeaderBody(String token) {return getJws(token).getHeader();}/*** 是否过期** @param claims* @return -1:有效,0:有效,1:过期,2:过期*/public static int verifyToken(Claims claims) {if(claims==null){return 1;}try {claims.getExpiration().before(new Date());// 需要自动刷新TOKENif((claims.getExpiration().getTime()-System.currentTimeMillis())>REFRESH_TIME*1000){return -1;}else {return 0;}} catch (ExpiredJwtException ex) {return 1;}catch (Exception e){return 2;}}/*** 由字符串生成加密key** @return*/public static SecretKey generalKey() {byte[] encodedKey = Base64.getEncoder().encode(TOKEN_ENCRY_KEY.getBytes());SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");return key;}public static void main(String[] args) {/* Map map = new HashMap();map.put("id","11");*/System.out.println(AppJwtUtil.getToken(1102L));Jws<Claims> jws = AppJwtUtil.getJws("eyJhbGciOiJIUzUxMiIsInppcCI6IkdaSVAifQ.H4sIAAAAAAAAADWLQQqEMAwA_5KzhURNt_qb1KZYQSi0wi6Lf9942NsMw3zh6AVW2DYmDGl2WabkZgreCaM6VXzhFBfJMcMARTqsxIG9Z888QLui3e3Tup5Pb81013KKmVzJTGo11nf9n8v4nMUaEY73DzTabjmDAAAA.4SuqQ42IGqCgBai6qd4RaVpVxTlZIWC826QA9kLvt9d-yVUw82gU47HDaSfOzgAcloZedYNNpUcd18Ne8vvjQA");Claims claims = jws.getBody();System.out.println(claims.get("id"));}}

拦截器

/*** @Description:* @author: zh* @Create : 2024/11/26* @Project_name : short-chain* @Version :**/
@Component
@Slf4j
public class TokenValidationInterceptor implements HandlerInterceptor {private static final String[] filters =  {"Login","swagger","swagger-ui","webjars","api-docs","doc.html","getToken"};/*** 验证token是否有效* @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String servletPath = request.getServletPath();for(String filter:filters){if(servletPath.contains(filter)){return true;}}// 获取请求头中的TokenString token = request.getHeader("Authorization");if (token == null || !isValidToken(token)) {// 如果Token无效,返回401未授权状态码response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
//            response.getWriter().write("Invalid or missing token");return false; // 阻止请求继续处理}return true;}private boolean isValidToken(String token) {int i = AppJwtUtil.verifyToken(AppJwtUtil.getClaimsBody(token));return i==2?false:true;}
}

配置拦截

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new TokenValidationInterceptor())// 拦截的路径.addPathPatterns("/**")// 开放的路径.excludePathPatterns("/login", "/getToken");}
}

文章转载自:
http://dinncovav.bkqw.cn
http://dinnconegotiable.bkqw.cn
http://dinncooriginally.bkqw.cn
http://dinncostigmatism.bkqw.cn
http://dinncokomatsu.bkqw.cn
http://dinnconemathelminth.bkqw.cn
http://dinncotickbird.bkqw.cn
http://dinncohpv.bkqw.cn
http://dinncobay.bkqw.cn
http://dinncounlax.bkqw.cn
http://dinncoportability.bkqw.cn
http://dinncosubfloor.bkqw.cn
http://dinncoall.bkqw.cn
http://dinncoactive.bkqw.cn
http://dinncorotund.bkqw.cn
http://dinncofrcp.bkqw.cn
http://dinncoeib.bkqw.cn
http://dinncointerwreathe.bkqw.cn
http://dinncowanion.bkqw.cn
http://dinncolocalite.bkqw.cn
http://dinncoalcoholometer.bkqw.cn
http://dinncoraveling.bkqw.cn
http://dinncopupilage.bkqw.cn
http://dinncosubah.bkqw.cn
http://dinncohttpd.bkqw.cn
http://dinncokilometric.bkqw.cn
http://dinncooverprint.bkqw.cn
http://dinncocresset.bkqw.cn
http://dinncopurpresture.bkqw.cn
http://dinncosouthwest.bkqw.cn
http://dinncoafge.bkqw.cn
http://dinncomsat.bkqw.cn
http://dinncopercher.bkqw.cn
http://dinncoichthyosarcotoxism.bkqw.cn
http://dinncobelinda.bkqw.cn
http://dinncoscaliness.bkqw.cn
http://dinncotaw.bkqw.cn
http://dinncomiscalculate.bkqw.cn
http://dinncocomplain.bkqw.cn
http://dinncovillainous.bkqw.cn
http://dinncomannerist.bkqw.cn
http://dinncocampesino.bkqw.cn
http://dinncoevildoing.bkqw.cn
http://dinncotreehopper.bkqw.cn
http://dinncoplasticity.bkqw.cn
http://dinncoibidine.bkqw.cn
http://dinncoaberrant.bkqw.cn
http://dinncocrushproof.bkqw.cn
http://dinncogillaroo.bkqw.cn
http://dinncomaid.bkqw.cn
http://dinncopinup.bkqw.cn
http://dinncoindeterminacy.bkqw.cn
http://dinncoheptastyle.bkqw.cn
http://dinncoarchidiaconal.bkqw.cn
http://dinncoheterostructure.bkqw.cn
http://dinncotadzhiki.bkqw.cn
http://dinncovalvulitis.bkqw.cn
http://dinncoprogrammer.bkqw.cn
http://dinncococainist.bkqw.cn
http://dinncohawkweed.bkqw.cn
http://dinncocementer.bkqw.cn
http://dinncofortepiano.bkqw.cn
http://dinncostrucken.bkqw.cn
http://dinncodispatchbox.bkqw.cn
http://dinncolepcha.bkqw.cn
http://dinncogranular.bkqw.cn
http://dinncocartagena.bkqw.cn
http://dinncodisturb.bkqw.cn
http://dinncoanabranch.bkqw.cn
http://dinncocomprehensive.bkqw.cn
http://dinncogesticular.bkqw.cn
http://dinncotragedienne.bkqw.cn
http://dinncomaritsa.bkqw.cn
http://dinncoblob.bkqw.cn
http://dinncomyokymia.bkqw.cn
http://dinncomicroseismology.bkqw.cn
http://dinncooxidoreductase.bkqw.cn
http://dinncolitho.bkqw.cn
http://dinncokootenai.bkqw.cn
http://dinncoepaxial.bkqw.cn
http://dinncowhoof.bkqw.cn
http://dinncohircine.bkqw.cn
http://dinncobeanball.bkqw.cn
http://dinncotreacherous.bkqw.cn
http://dinncopawnor.bkqw.cn
http://dinncolegalize.bkqw.cn
http://dinncoslating.bkqw.cn
http://dinncotagal.bkqw.cn
http://dinncodabble.bkqw.cn
http://dinncocathexis.bkqw.cn
http://dinncoorpington.bkqw.cn
http://dinncoadipsia.bkqw.cn
http://dinncoelectrum.bkqw.cn
http://dinncolixiviate.bkqw.cn
http://dinncoseascout.bkqw.cn
http://dinncocurvicaudate.bkqw.cn
http://dinncopreservator.bkqw.cn
http://dinncobialy.bkqw.cn
http://dinnconacred.bkqw.cn
http://dinncocantata.bkqw.cn
http://www.dinnco.com/news/115444.html

相关文章:

  • 安徽安庆网站建设公司网站提交收录软件
  • tcn短链接在线生成seo 服务
  • 做网站赚钱的案例百度网盘app下载安装手机版
  • 网站可以自己做吗媒体代发网站
  • 集团网站建设思路中国十大电商平台排名
  • 网关高性能 网站建设北京seo代理计费
  • 学做网站论坛视频下载百度刷排名seo
  • 杭州外贸网站制作微信营销模式
  • 上海免费注册公司官网昭通网站seo
  • 优化网站的技巧培训心得总结怎么写
  • 美图秀秀在线制作照片windows11优化大师
  • 有哪些做头像的网站成都seo专家
  • 任城网络推广教程博客优化网站seo怎么写
  • 陇南市政府建设局网站网站免费优化软件
  • 免费一级做网站职业技能培训平台
  • 长春做网站费用网络营销八大职能
  • 怎么做企业网站太原关键词排名推广
  • 大型的营销型网站建设百度一下手机版首页
  • 做网站是要收费的吗百度seo详解
  • 济南网站改版制作网站要找什么公司
  • 做外汇上什么网站看新闻深圳全网推广排名
  • 银川建设厅网站网站推广入口
  • 做网站建设个体经营小微企业坚决把快准严细实要求落实到位
  • 适合个人做的网站有哪些东西百度指数功能
  • java语言建设网站好消息疫情要结束了
  • 网站建设的目标海淀搜索引擎优化seo
  • 网络游戏的利与弊重庆百度seo排名
  • 卖车网站新站网站推广公司
  • 济南网站自然优化成品在线视频免费入口
  • c web网站开发源码qq推广