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

wordpress 好的相册seo优化工具有哪些

wordpress 好的相册,seo优化工具有哪些,网站添加icp备案号,东莞网站视频概述 JWT,Java Web Token,通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理 JWT 的作用如下: 授权:一旦用户登…

概述

JWT,Java Web Token,通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理

JWT 的作用如下:

  • 授权:一旦用户登录,每个后续请求将包括 JWT,从而允许用户访问该令牌允许的路由,服务和资源
  • 信息交换:JSON Web Token 是在各方之间安全地传输信息的好方法,因为可以对 JWT 进行签名,此外,由于签名是使用标头和有效负载计算的,因此还可以验证内容是否篡改

传统的 Session 认证

1. 认证方式

在这里插入图片描述

http 协议本身是一种无状态协议,这就意味着如果用户向我们的应用提供了用户名和密码进行认证,那么下次请求时还需再作一次认证。因为根据 http 协议,我们并不知道是哪个用户发出的请求,所以为了让应用能识别是哪个用户发出的请求,我们只能在服务存储一份用户登录的信息,这份登录信息会在响应传递给浏览器,告诉其保存为 cookie,以便下次请求时发送回来,这样我们就能识别请求来自哪个用户了

2. 缺点

  • 每个用户经过认证后,都要在服务端做一次记录,以方便下次鉴别。通常而言,session 都是保存在内存中的,随着认证用户的增多,服务端的开销也会明显增大
  • 用户认证之后,服务端做认证记录,如果认证的记录被保存到内存中,就意味着下次用户请求还得访问该服务器,才能拿到授权的资源,在分布式应用上,相应的限制了负载均衡器的能力,也就意味着限制了应用的扩展能力
  • 基于 cookie 进行用户识别,cookie 一旦被捕获,用户就会很容易受到跨站请求伪造的攻击
  • 在前后端分离时增加了部署的复杂性

JWT 认证

1. 认证方式

在这里插入图片描述

  • 前端通过 Web 表单将自己的用户名和密码发送给后端的接口,这一过程一般是 http post 请求,建议的方式是通过 SSL 加密的传输(https),从而避免敏感信息被嗅探
  • 后端核对用户名和密码成功后,将用户的 id 等其他信息作为 JWT Payload(负载),将其与头部分别进行 Base64 编码,拼接后签名,形成一个 JWT Token
  • 后端将 JWT 字符串作为登录成功的返回结果返回,前端可以将返回的结果保存在本地缓存上,退出登录时前端删除保存的 JWT 即可
  • 前端在每次请求后端带回 JWT
  • 后端检查是否存在,如验证 JWT 的有效性,检查签名是否正确,检查 Token 是否过期,检查 Token 接收方是否是自己
  • 验证通过后,后端使用 JWT 中包含的用户信息进行其他逻辑操作,返回相应结果

2. 优点

  • 简洁,可以通过 URL、POST 参数或者在 HTTP Header 发送,因为数据量小,传输速度快
  • 自包含,负载中包含了所有用户需要的信息,避免多次查询数据库
  • Token 以加密形式保存在客户端,原则上任何 web 形式都支持
  • 不需要在服务端保存会话信息,特别适用于分布式微服务

JWT 结构

通常 JWT 如下所示:xxxxx.yyyyy.zzzzz

  • 标头(Header):标头一般由两部分组成:令牌的类型和所使用的签名算法,标头使用 Base64 编码

    {"alg":"HS256","typ":"JWT"
    }
    
  • 有效负载(payload):令牌的第二部分是有效负载,其中包含声明。声明是有关实体(通常是用户)和其他数据的声明。同样使用 Base64 编码。不建议放入用户的敏感信息

    {"sub":"12345678","name":"john","admin":true,...
    }
    
  • 签名(Signature):Signature 需要使用编码后的 Header 和 Payload 以及我们提供的一个密钥,然后使用 Header 中指定签名算法,进行签名。签名的作用是保证 JWT 没有被篡改过,如:HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)

客户端收到服务端发送的 token 后,再次请求服务端需要带上 token,此时 token 包含三部分:经过 Base64 编码的 Header、经过 Base64 编码的 Payload 和加密后的签名,服务端用自己保存的 secret 与客户端发送的 Header、Payload 运算,如果结果和客户端带回来的签名不一致,则验证失败


JWT 使用

引入依赖

<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version>
</dependency>

生成 token

Calendar instance = Calendar.getInstance();
instance.add(Calendar.SECOND, 20);
Map<String, Object> map = new HashMap<>();
String token = JWT.create().withHeader(map)    // header.withClaim("userId", 21)    // payload.withClaim("username", "yeeq").withExpiresAt(instance.getTime())    // 指定令牌的过期时间.sign(Algorithm.HMAC256("FAWF2#!F@"));  // 签名,并指定密钥

根据令牌和签名解析数据

// 创建验证对
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("FAWF2#!F@")).build();
// 解码后的信息
DecodedJWT verify = jwtVerifier.verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MDAyNTQ4NzIsInVzZXJJZCI6MjEsInVzZXJuYW1lIjoieWVlcSJ9.jo_6gKThSXUcEfH1e9bu7at9lm2zmdupwiYvMUWopls");
System.out.println(verify.getClaim("userId").asInt());
System.out.println(verify.getClaim("username").asString());

常见异常信息:

  • SignatureVerificationException:签名不一致异常
  • TokenExpiredException:令牌过期异常
  • AlgorithmMismatchException:算法不匹配异常
  • InvalidClaimException:失效的 payload 异常

JWT 封装工具类

一般结合拦截器或者网关完成认证

public class JWTUtils {private static final String SIGN = "FAWF2#!F@";/*** 生成 token* @param map payload 的信息* @return token*/public static String getToken(Map<String, String> map) {Calendar instance = Calendar.getInstance();instance.add(Calendar.DATE, 7);JWTCreator.Builder builder = JWT.create();// 创建 payloadmap.forEach((k, v) -> {builder.withClaim(k, v);});String token = builder.withExpiresAt(instance.getTime())    // 指定令牌的过期时间.sign(Algorithm.HMAC256(SIGN));  // 签名,并指定密钥return token;}/*** 验证 token 的合法性* @param token token*/public static void verifyJWT(String token) {JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);}/*** 获取 token 的信息* @return token 的信息*/public static DecodedJWT getTokenInfo(String token) {DecodedJWT verify = JWT.require(Algorithm.HMAC256(SIGN)).build().verify(token);return verify;}
}

http://www.yayakq.cn/news/620625/

相关文章:

  • 南昌网站建设培训学校山西seo推广系统
  • 襄阳哪里做网站企业网站开发成都
  • 长春老火车站图片推广什么app佣金高
  • 手机网站全屏代码ui设计的网站
  • 苏州专业网站制作方案做演示的网站
  • 网站构建的过程网站优化的好处
  • 网站形式影视公司网页设计
  • 免费建立网站的平台高德地图在英国可以用吗
  • 厦门网站建设设计2021中国企业500强
  • 注册网站花的钱做会计分录livezilla wordpress
  • 建设网站q8555 3807更换wordpress界面
  • asp网站 seo门户网站免费奖励自己
  • 网站建设会计搜狗短网址生成
  • HTML可以做彩票网站吗搜索引擎网站的搜素结果有何区别
  • 网站的开发流程可以分为哪三个阶段软件行业 网站建设 模块
  • 做的网站访问不了深圳动画设计制作哪些类型
  • 告诉你做网站需要多少钱手机上怎么做能打开的网站
  • 利用网络媒体营销来做电商网站论文vue.js wordpress
  • 如何建设好一个公司网站服务器维护工程师
  • 西安小程序开发公司哪家好温州最好的seo
  • 电脑当网站空间深圳宝安区什么时候解封
  • 网站建设整个流程东营专业网站建设
  • 苏州 网站建设 app做网站每天更新两篇文章
  • 微网站开发技术架构网站备案的好处有哪些
  • 建筑行业网站运营方案聚合广告联盟
  • 网站做多大尺寸精品网站建设费用 都来磐石网络
  • 如何查询某个网站的设计公司做ppt的模板的网站有哪些内容
  • 手机网站设计公司哪家专业漳州公司注册
  • 网站建设教程主页网站建设如何做
  • 美容加盟的网站建设免费视频素材网站推荐