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

重庆网站建设外包哪家好百度霸屏推广靠谱吗

重庆网站建设外包哪家好,百度霸屏推广靠谱吗,seo有哪些优缺点?,做网站骗钱这里写目录标题 令牌技术2.4.1 JWT令牌2.4.2 jwt使用 令牌技术 令牌,其实它就是一个用户身份的标识,其实本质就是一个字符串。 如果通过令牌技术来跟踪会话,就可以在浏览器发起请求。在请求登录接口的时候,如果登录成功&#xff…

这里写目录标题

    • 令牌技术
      • 2.4.1 JWT令牌
      • 2.4.2 jwt使用

令牌技术

令牌,其实它就是一个用户身份的标识,其实本质就是一个字符串。

在这里插入图片描述

如果通过令牌技术来跟踪会话,就可以在浏览器发起请求。在请求登录接口的时候,如果登录成功,可以生成一个令牌,令牌就是用户的合法身份凭证。接下来响应数据的时候,可以直接将令牌响应给前端。

接下来在前端程序当中接收到令牌之后,就需要将这个令牌存储起来。这个存储可以存储在 cookie 当中,也可以存储在其他的存储空间(比如:localStorage)当中。

接下来,在后续的每一次请求当中,都需要将令牌携带到服务端。携带到服务端之后,接下来我们就需要来校验令牌的有效性。如果令牌是有效的,就说明用户已经执行了登录操作,如果令牌是无效的,就说明用户之前并未执行登录操作。

此时,如果是在同一次会话的多次请求之间,我们想共享数据,我们就可以将共享的数据存储在令牌当中就可以了。

优缺点

  • 优点:
    • 支持PC端、移动端
    • 解决集群环境下的认证问题
    • 减轻服务器的存储压力(无需在服务器端存储)
  • 缺点:需要自己实现(包括令牌的生成、令牌的传递、令牌的校验)

2.4.1 JWT令牌

JWT全称:JSON Web Token (官网:https://jwt.io/)

  • 定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。

JWT的组成:(JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)

  • 第一部分:Header(头), 记录令牌类型、签名算法等。 例如:{“alg”:“HS256”,“type”:“JWT”}

  • 第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等。 例如:{“id”:“1”,“username”:“Tom”}

  • 第三部分:Signature(签名),防止Token被篡改、确保安全性。将header、payload,并加入指定秘钥,通过指定签名算法计算而来。

在这里插入图片描述

其实在生成JWT令牌时,会对JSON格式的数据进行一次编码:进行base64编码

Base64:是一种基于64个可打印的字符来表示二进制数据的编码方式。既然能编码,那也就意味着也能解码。所使用的64个字符分别是A到Z、a到z、 0- 9,一个加号,一个斜杠,加起来就是64个字符。任何数据经过base64编码之后,最终就会通过这64个字符来表示。当然还有一个符号,那就是等号。等号它是一个补位的符号

需要注意的是Base64是编码方式,而不是加密方式。

JWT令牌最典型的应用场景就是登录认证:

  1. 在浏览器发起请求来执行登录操作,此时会访问登录的接口,如果登录成功之后,我们需要生成一个jwt令牌,将生成的 jwt令牌返回给前端。
  2. 前端拿到jwt令牌之后,会将jwt令牌存储起来。在后续的每一次请求中都会将jwt令牌携带到服务端。
  3. 服务端统一拦截请求之后,先来判断一下这次请求有没有把令牌带过来,如果没有带过来,直接拒绝访问,如果带过来了,还要校验一下令牌是否是有效。如果有效,就直接放行进行请求的处理。

2.4.2 jwt使用

引入依赖

 <!--jwt令牌--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency>

生成jwt

// 生成jwt@Testpublic void generateToken() {// JWT头部分信息【Header】Map<String, Object> header = new HashMap<>();header.put("alg", "HS256");header.put("typ", "JWT");// 载核【Payload】Map<String, Object> payload = new HashMap<>();payload.put("sub", "1234567890");payload.put("name", "kwh");payload.put("admin", true);// 声明Token失效时间Calendar instance = Calendar.getInstance();instance.add(Calendar.SECOND, 300);// 300s// 生成TokenString token = Jwts.builder().setHeader(header)// 设置Header.setClaims(payload) // 设置载核.setExpiration(new Date(System.currentTimeMillis() +3600 *1000))// 设置生效时间.signWith(SignatureAlgorithm.HS256, "secret") // 签名,这里采用私钥进行签名.compact(); // 压缩生成xxx.xxx.xxxSystem.out.println(token);}

解析jwt令牌

// 解析jwt令牌@Testpublic void getInfoByJwt() {// 生成的tokenString token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTczMDcyNjM2M30.HjTmlXF0gdli6yD-1ZL95FOl8LJOwxRvVTycB8Elyu4";// 解析head信息JwsHeader jwsHeader = Jwts.parser().setSigningKey("secret").parseClaimsJws(token).getHeader();// {typ=JWT, alg=HS256}System.out.println(jwsHeader);System.out.println("1111111");//typ:JWTSystem.out.println("typ:"+jwsHeader.get("typ"));// 解析PayloadClaims claims = Jwts.parser().setSigningKey("secret").parseClaimsJws(token).getBody();System.out.println(claims);// {sub=1234567890, name=John Doe, admin=true, exp=1663297431}System.out.println("2222222");//admin:trueSystem.out.println("admin:"+claims.get("admin"));// 解析SignatureString signature =Jwts.parser().setSigningKey("secret")//指定签名密钥.parseClaimsJws(token)//解析令牌.getSignature();System.out.println(signature); //Ju5EzKBpUnuIRhDG1SU0NwMGsd9Jl_8YBcMM6PB2C20}

登录示例代码:

utlis包下有JwtUtils工具类

public class JwtUtils {private static String signKey = "secret";private static Long expire = 43200000L;//指定失效时间/*** 生成JWT令牌* @param claims JWT第二部分负载 payload 中存储的内容* @return*/public static String generateJwt(Map<String, Object> claims){String jwt = Jwts.builder().addClaims(claims).signWith(SignatureAlgorithm.HS256, signKey).setExpiration(new Date(System.currentTimeMillis() + expire)).compact();return jwt;}/*** 解析JWT令牌* @param jwt JWT令牌* @return JWT第二部分负载 payload 中存储的内容*/public static Claims parseJWT(String jwt){Claims claims = Jwts.parser().setSigningKey(signKey).parseClaimsJws(jwt).getBody();return claims;}
}
 @PostMapping("/login")public Result login(@RequestBody Emp emp) {log.info("员工登录,{}", emp);Emp e = empService.login(emp);if (e != null){Map<String, Object> claims = new HashMap<>();claims.put("id",e.getId());claims.put("name",e.getName());claims.put("username",e.getUsername());//jwt包含了当前登录的员工信息String jwt = JwtUtils.generateJwt(claims);return Result.success(jwt);//返回给前端}return Result.error("用户或密码错误!!!!!!!!");}
        //jwt包含了当前登录的员工信息String jwt = JwtUtils.generateJwt(claims);return Result.success(jwt);//返回给前端}return Result.error("用户或密码错误!!!!!!!!");
}

http://www.khdw.cn/news/63078.html

相关文章:

  • 即墨有做网站的吗百度文章收录查询
  • 小型行业网站建设维护成本网络广告
  • 做的网站如何更换网站模板seo是什么职业岗位
  • 外贸网站seo优化常德论坛网站
  • 政府网站建设的项目描述百度竞价推广的技巧
  • 怎么推广游戏叫别人玩外贸网站seo推广教程
  • 在线网页下载seo优化诊断工具
  • 咸阳做网站的公司大众点评seo关键词优化
  • 网站建设行业发展史免费刷粉网站推广免费
  • wordpress 图片并列sem和seo有什么区别
  • 给别人做网站被诉侵权排名优化软件
  • 网站开发难题谷歌网站优化推广
  • 网站开发设计需求html网站模板免费
  • 免费做网站真的免费吗合肥seo排名优化公司
  • 电子商务网站开发需求文档百度号码查询平台
  • 阿里云虚拟主机可以做几个网站吗郑州营销型网站建设
  • 5g创业网站建设网络推广怎么找客户资源
  • 合肥做双语外贸网站搜索引擎关键词seo优化公司
  • 做网站建设需要做哪些工作搜索引擎营销方法有哪些
  • 个人电脑做服务器网站网络营销与策划试题及答案
  • 做信息网站要办icp证吗竞价托管公司排名
  • 有网站前台百度引擎入口官网
  • 毕业设计做网站还是系统好郑州网站建设用户
  • 保定免费建站疫情最新消息今天
  • 哈尔滨网站建设费用宁波seo公司排名
  • 做app 的模板下载网站有哪些代运营
  • 流行用什么做网站seo是什么平台
  • 有哪些公司的网站做的很好看有人看片吗免费的
  • 网站前端开发商业策划公司十大公司
  • 温州高端网站建设公司培训机构排名前十