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

java怎么做网站流量统计南昌网优化seo公司

java怎么做网站流量统计,南昌网优化seo公司,便宜的手机网站建设,做网站用到什么技术一、JWT 概述 1. 扩展(Cookie、Session、Token) 灵魂拷问:为什么你的淘宝账号关闭后,购物车还在?其实这是Cookie 在搞事情。它就像是一种入场券,有该入场券就可以随意进出关卡。但这有个致命的弱点,Cookie是存在客户…

一、JWT 概述

1. 扩展(Cookie、Session、Token)

灵魂拷问:为什么你的淘宝账号关闭后,购物车还在?其实这是Cookie 在搞事情。它就像是一种入场券,有该入场券就可以随意进出关卡。但这有个致命的弱点,Cookie是存在客户端的,要是不法分子获取到你的Cookie,就可以冒充你的身份,登录你的账号,从而窃取你的信息。

但是Session不一样,Session是保存在服务器的,就像你在银行办业务,只需要在柜台显示身份证就可以了。现在有移动设备,网页,小程序,这些客户端的网络请求接口默认是没有Cookie机制的,这时客户端程序将Session_ID在存储系统中保存起来,换个名字叫Token, 这就是Token.

Session 和 Token 是一样的,只是少了浏览器的Cookie机制,需要自己维护。为了遵循Bearer认证规范,客户端请求时不在使用Cookie字段,而是使用Authorization字段,它将用户信息加密成字符串,保存在服务器中。

细心的你也许发现了,session和token都是保存在服务器的,这在单体项目中是没有问题的,但在分布式系统中可能会在某些服务中没有认证数据,导致鉴权失败。解决这问题需要在服务端再假设一个中心化的存储服务,例如Redis专门来存储会话数据,但这样中心化的服务容易给分布式系统造成性能瓶颈,中心化服务器如果出现故障会导致所有服务不可用。所以我们还是希望会话数据由客户端保管,接口尽可能是无状态的,我们直接把Cookie的数据搬过来作为Token就好了,但这个Cookie的签名算法是我们随便写的, 会导致我们的程序的签名五花八门,也有可能有漏洞,因此我们需要一个标准,而JWT就是一个标准。

2. 什么是 JWT

JWT (Json Web Token),通过数字签名的方式,以JSON 对象为载体,在不同的服务端之间安全的传输信息。说白了JWT就是一种密钥,用于授权认证,如果没有密钥,或者密钥失效了,你就不能访问核心信息。

3. JWT作用

常见的场景是授权认证, 如用户登录成功后,就会生成一个JWT, 后续的请求都会携带这个JWT,在处理用户请求时,先进行JWT安全校验,通过后才会处理请求,否则不处理。

4. JWT的组成

JWT有三部分组成,每部分用小数点( . ) 连接。

这三部分分别是:

Header (请求头)

  • typ: 类型
  • alg: 加密算法

Payload  (数据体)

Signature (签名)

 这个签名是将前两部分加盐加密后拼接而成的,以下是对Header(请求头)和(数据体)加密的代码。虽然将数据体加密了,但还是可以解开,所以不要把敏感信息写在JWT的数据体里。

二、 JWT 的生成

第一步需引入JWT依赖

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>

如果是JDK 1.8 以上,还需要加入以下以来,否则会报错。

<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.0</version></dependency><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-impl</artifactId><version>2.3.0</version></dependency><dependency><groupId>com.sun.xml.bind</groupId><artifactId>jaxb-core</artifactId><version>2.3.0</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency>

1. 加密

package com.example.jwtdemo;import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import io.jsonwebtoken.Jwts;import java.util.Date;
import java.util.UUID;@SpringBootTest
class JwtDemoApplicationTests {private long time = 1000*60*60*2; // 超时时间private String signature = "admin";@Testpublic void jwt() {JwtBuilder jwtBuilder = Jwts.builder();String jwtToken = jwtBuilder// header.setHeaderParam("typ", "JWT").setHeaderParam("alg", "HS256")// payload.claim("username", "tom").claim("role", "admin").setSubject("admin-test")  // 主题.setExpiration(new Date(System.currentTimeMillis() + time))  // 失效时间为1天.setId(UUID.randomUUID().toString())// signature.signWith(SignatureAlgorithm.HS256, signature)  // 签名算法.compact();  // 将三部分字符串拼接System.out.println(jwtToken);}}

2. 解密

package com.example.jwtdemo;import io.jsonwebtoken.*;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.util.Date;
import java.util.UUID;@SpringBootTest
class JwtDemoApplicationTests {private String signature = "admin";// 解密@Testpublic void parse() {String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRvbSIsInJvbGUiOiJhZG1pbiIsInN1YiI6ImFkbWluLXRlc3QiLCJleHAiOjE3NDg3MDM5NTQsImp0aSI6Ijk4ZmE5ZWIwLTAzZmEtNGRlZS1hNGRlLTdiMzRjMzFkOTI3MyJ9.EPf9iwND4wLe-DHL8ykJH0zmsLxGuscyq4F34D510yo";JwtParser jwtParser = Jwts.parser();Jws<Claims> claimsJws = jwtParser.setSigningKey(signature).parseClaimsJws(token);// 解密key, 和加密 key 是一样的Claims body = claimsJws.getBody();System.out.println(body.get("username"));System.out.println(body.get("role"));System.out.println(body.getId());}}

3. 校验token

 // 校验 token 是否有效public boolean checkToken(String token) {if (token == null) {return false;}JwtParser jwtParser = Jwts.parser();// 我们并不需要解析出具体的内容,只需要判断是否能正确解析,如果没有抛异常,说明token正常,否则是为token不正常try {Jws<Claims> claimsJws = jwtParser.setSigningKey(signature).parseClaimsJws(token);// 解密key, 和加密 key 是一样的} catch (IllegalArgumentException e) {return false;}return true;}

 

http://www.dtcms.com/wzjs/222290.html

相关文章:

  • 可以做渐变色块拼接的网站营销推广ppt
  • 四川省政府网站集约化建设百度搜索seo优化技巧
  • 专业建设 验收 网站百度seo灰色词排名代发
  • 做网站片头的软件qq排名优化网站
  • 网站的备案号查询学新媒体运营最好的培训学校
  • 德州力点科技 网站建设3步打造seo推广方案
  • flash打开网站源码关键词挖掘网站
  • 朋友圈自己做的网站搜索引擎优化的目的是对用户友好
  • 手机网站怎么建设搭建网站平台需要多少钱
  • asp网站开发工具企业文化标语经典
  • 做产品类的工作上什么网站好seo排名赚挂机
  • 做民宿哪个网站好名片seo什么意思
  • 做废铝的关注哪个网站好seo短视频发布页
  • 房产中介网站建设google play下载
  • 国内最好的在线网站建设机器人编程培训机构排名
  • 网站开发属于软件开发服务吗中国互联网公司排名
  • 黑龙江省垦区建设协会网站学网络营销去哪个学校
  • 厦门网站建设缑阳建宁波seo关键词优化方法
  • 淄博网站制作建设杭州优化seo公司
  • 北京网站制作排名外贸商城建站
  • wordpress网页打不开电脑优化软件推荐
  • 做中英文游戏门户网站关键词怎么弄高端品牌网站建设
  • 淘宝图片做链接的网站北京网络营销外包公司哪家好
  • 广州网站建设推广服务在线制作网页网站
  • 深圳全国网站制作哪个好html网页制作
  • 高校网站建设管理制度今日头条新闻视频
  • 小程序微信定制开发石家庄网络seo推广
  • wordpress被黑求最安全的国外主机百度seo一本通
  • 集团为什么做网站正规接单赚佣金的app
  • c 做网站seo排名赚下载