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

网站怎么做桌面快速链接新华舆情监测平台

网站怎么做桌面快速链接,新华舆情监测平台,中国建设银行官网站保本理财,2024房地产趋势分析目录 1.实现登录验证的引出原因 2.JWT令牌2.1 使用JWT令牌时2.2 令牌的组成 3. JWT令牌(token)生成和校验3.1 引入JWT令牌的依赖3.2 使用Jar包中提供的API来实现JWT令牌的生成和校验3.3 使用JWT令牌验证登录3.4 令牌的优缺点 1.实现登录验证的引出 传统…

目录

  • 1.实现登录验证的引出
    • 原因
  • 2.JWT令牌
    • 2.1 使用JWT令牌时
    • 2.2 令牌的组成
  • 3. JWT令牌(token)生成和校验
    • 3.1 引入JWT令牌的依赖
    • 3.2 使用Jar包中提供的API来实现JWT令牌的生成和校验
    • 3.3 使用JWT令牌验证登录
    • 3.4 令牌的优缺点

1.实现登录验证的引出

传统思路下:

  1. 登录页面把用户名和密码交给服务器。
  2. 服务器验证用户名和密码是否正确,并返回校验结果给后端。
  3. 如果密码正确,就会在服务器创建Session,通过Cookie把sessionId返回给客户端。

原因

但是在集群环境下,无法直接使用Session。因为如果只部署在一台机器时,容易发生单点故障(一旦这台服务器挂了,整个应用就无法访问),所以通常情况下,一个Web应用会部署在多个服务器上,通过Nginx等进行负载均衡。此时,来自一个用户的请求就会分发到不同的服务器上

在这里插入图片描述

  • 使用Session时:
    1. 用户登录: 用户登录请求,经过负载均衡发送给服务器1,服务器1进行用户名和密码验证,验证成功后,把Session存在了服务器1上。
    2. 查询操作:用户登录之后,携带Cookie(里面带有SessionId)继续执行查询操作,假如进行查询博客列表,此时请求经过负载均衡发到服务器2上,服务器2会先通过SessionId验证用户是否登录,此时第二台机器上没有该用户的Session,即出现查询不了的问题。

在这里插入图片描述

2.JWT令牌

JWT全称:JSON Web Token,用于客户端和服务器之间传递安全可靠的信息,本质是一个token,也叫token,令牌的本质就是一个字符串。相当于现在人们的身份证,出门在外验证身份的时候,拿出身份证即可。

2.1 使用JWT令牌时

  1. 用户登录 : 用户登录请求,经过负载均衡,把请求发给服务器1,服务器1进行账号密码验证,验证成功之后,生成一个令牌,并返回给客户端。
  2. 客户端收到令牌时,把令牌存储起来,可以存储在Cookie中,也可以存储在其它的存储空间,典型的如(localStorage)
  3. 查询操作 用户登录之后,携带令牌继续执行查询操作,假如查询博客列表,此时请求经过负载均衡发到服务器2,服务器2先进行权限验证操作。服务器验证令牌是否有效,如果有效,说明用户已经执行了登录操作,如果无效,说明用户之前未执行登录操作。

在这里插入图片描述

2.2 令牌的组成

令牌官网所示,token,本质上一个字符串中间使用 符号 点 . 来分割,令牌由三部分组成,header、payload和verify signature

在这里插入图片描述

  • 第一部分:Header(头),令牌的类型和使用的签名算法,如"alg": “HS256(哈希算法)”, “typ”: “JWT”。

  • 第二部分:Payload(负载),存放一些有效的信息(自定义信息,默认信息)如{“id”:“1”,“username”:“zhangsan”},还存在JWT提供的现场字段,如过期时间戳等。

  • 第三部分:Signature(签名),防止token被篡改,确保安全性

    签名的目的就是为了防止token被篡改,而正因为token最后一个部分签名存在,
    所以整个token是非常安全可靠的,一旦token当中的任何一部分被修改,
    整个token在校验的时候都会失败。 
    

3. JWT令牌(token)生成和校验

3.1 引入JWT令牌的依赖

  • 在pom.xml文件中引入依赖
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version></dependency><!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-impl --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.5</version><scope>runtime</scope></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is
preferred --><version>0.11.5</version><scope>runtime</scope></dependency>

3.2 使用Jar包中提供的API来实现JWT令牌的生成和校验

  • 生成token之后,获取token进行解析,创建解释器,设置签名密钥,如果解析token的claims内容不为null,说明校验成功,否则失败。
package com.example.blog.utils;import com.example.blog.constant.Constants;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtParser;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.io.Encoders;
import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;import javax.crypto.SecretKey;
import java.security.Key;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;@Slf4j
public class JwtUtils {// JWT过期时间public static final long JWT_EXPIRATION = 60*60*60*1000;// 生成keyprivate static final String secretStr = "DuJXRS2W3AJHqyFhAplBmsPNawnEdFYFNmlNdMbyU9w=";private static final Key key = Keys.hmacShaKeyFor(Decoders.BASE64.decode(secretStr));/***  生成token*/public static String genJwtToken(Map<String,Object> claim) {String token = Jwts.builder().setClaims(claim).setExpiration(new Date(System.currentTimeMillis()+JWT_EXPIRATION)).signWith(key).compact();return token;}/***  校验token*  Claims 为空,表示jwt校验失败**/public static Claims parseToken(String token) {// 创建解析器,设置签名密钥JwtParser build = Jwts.parserBuilder().setSigningKey(key).build();Claims claims = null;try {// 解析tokenclaims = build.parseClaimsJws(token).getBody();}catch (Exception e){log.error("解析token失败,token:{}",token);return null;}return claims;}
}

3.3 使用JWT令牌验证登录

在这里插入图片描述

3.4 令牌的优缺点

  1. 优点:
    • 解决了集群环境下认证的问题
    • 不需要在服务器端存储,从而减轻了服务器的存储压力
  2. 缺点:
    • 需要自己实现令牌的生成、传递、校验
http://www.15wanjia.com/news/166885.html

相关文章:

  • 网站开发 怎么才能发表情鞋子商城网站开发背景
  • 北京网站建设网络推广公司建立微信公众号收费吗
  • 南宁网站建设liluokj前端开发岗位职责
  • 很长的网站域名怎么做短手机vi设计公司
  • 哪些网站是中文域名免费企业名录搜索
  • 网站搭建系列教程图文设计与制作
  • 做神马网站快速排过界女主个人做网站的
  • 小学生的做试卷儿的网站 你这python可以自学吗
  • 西峰住房和城乡建设局网站郴州网红店
  • 更换网站首页模板怎么做亚马逊推广
  • 网站编辑简历海外网站服务器网址
  • 石家庄做网站好的网络技术有限公司erp软件公司
  • 上海网站建设做物流一开发公司总工程师职责
  • 制作企业网站软件360浏览网页入口
  • 小说网站建设方案书小说推广关键词怎么弄
  • 重庆点优建设网站公司公司注册在上海的好处
  • 区总工会加强网站意识形态建设网站备案主体授权书
  • 自己建网站需要备案吗wordpress建站价格
  • 中国建设网官网网站免费网站建设软件大全
  • wordpress英文站网站开发选题申请理由
  • 手机网站可以做百度商桥吗如何做自动交易网站
  • 网站建设ppt百度文库上海城隍庙小吃推荐
  • 重庆公司建站网站设计一般包括哪些
  • 网站建设方案浩森宇特普宁做网站
  • 学校的网站管理系统推广()
  • 西安网站开发服务多少钱如何做网站meta设置
  • 手机电影网站源码模板怎么找网站站长
  • 腾讯域名注册网站wordpress付费下载模板
  • 建设网站搞网络营销的总结企业年金有什么好处
  • 中国招投标网站官网外贸网站制作需求