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

怎么设置自己的网站wordpress免费主题外贸

怎么设置自己的网站,wordpress免费主题外贸,域名查询备案查询,手机钓鱼网站免费制作核心概念:JWT是什么?JWT,全称是 JSON Web Token,是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。你可以把它想象成一个数字身…

核心概念:JWT是什么?

JWT,全称是 JSON Web Token,是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。

你可以把它想象成一个数字身份证安全通行证。当用户登录成功后,服务器会生成一个JWT并返回给客户端(通常是浏览器)。客户端在后续的请求中都需要带着这个“通行证”,服务器通过验证这个通行证来确认用户的身份和权限。


为什么在Java项目中使用JWT?(主要为了解决什么问题?)

在传统的Web应用中,我们使用 Session 机制来保持用户的登录状态。但Session有一些局限性,尤其是在现代分布式、微服务架构中:

  1. 服务器内存开销:每个用户的Session信息都存储在服务器内存中,用户量巨大时对服务器压力很大。

  2. 扩展性问题:当你有多台服务器(集群)时,需要做Session共享(Session Replication)或使用外部存储(如Redis),增加了架构的复杂性。

  3. 不适合跨域:在前后端分离、跨域API调用(如手机APP访问后端API)的场景下,基于Cookie的Session机制用起来很麻烦。

JWT的出现完美地解决了这些问题:

  • 无状态(Stateless):服务器不需要存储任何用户状态。用户的全部认证信息都存储在JWT本身中,并由客户端携带。这使得服务器应用非常容易扩展。

  • 跨域友好:可以轻松通过HTTP Header(通常是 Authorization: Bearer <token>)进行传输,完美支持跨域请求和移动端。

  • 自包含(Self-contained):Payload部分可以包含用户ID、角色等所有需要的信息,减少多次查询数据库的需要。


JWT的组成结构

一个JWT通常看起来像这样(由三部分组成,用点.分隔):
xxxxx.yyyyy.zzzzz

例如:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

  1. Header(头部)

    • 通常由两部分组成:令牌的类型(即"JWT")和所使用的签名算法(如HMAC SHA256或RSA)。

    • 这是一个JSON对象经过 Base64Url 编码后形成的字符串。

    • 示例解码后:{"alg": "HS256", "typ": "JWT"}

  2. Payload(负载)

    • 包含了你要传递的“声明”(Claims)。声明是关于实体(通常是用户)和其他数据的陈述。

    • 有三种类型的声明:

      • 注册标准声明:预定义但不强制使用的标准字段,如 iss(签发者), exp(过期时间), sub(主题), aud(受众)等。

      • 公共声明:可以添加任何信息的自定义字段,但为了避免冲突,应在IANA JSON Web Token Registry中定义或使用抗冲突命名空间的名称。

      • 私有声明:自定义的字段,用于在同意使用它们的各方之间共享信息。

    • 同样是一个JSON对象经过 Base64Url 编码后形成的字符串。

    • 示例解码后:{"sub": "1234567890", "name": "John Doe", "iat": 1516239022}

  3. Signature(签名)

    • 这是最核心的部分,用于防止令牌被篡改。

    • 签名是通过将编码后的Header、编码后的Payload、一个密钥(Secret)以及Header中指定的算法生成。

    • 例如,使用HMAC SHA256算法的签名是这样创建的:

      java

      HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)

在Java项目中的典型工作流程

  1. 认证(Login):用户使用用户名密码登录。

  2. 生成JWT:服务器验证凭据有效后,根据用户信息(如userId, role)生成一个JWT,并使用一个只有服务器知道的密钥(Secret) 进行签名。然后将JWT返回给客户端(通常在响应体中)。

  3. 客户端存储:客户端(如浏览器)收到JWT后,通常会将其存储在本地(Local Storage, Session Storage或Cookie中)。

  4. 携带JWT访问:客户端在后续请求的HTTP Header中添加:Authorization: Bearer <JWT>

  5. 验证JWT:服务器接收到请求后,提取Header中的JWT:

    • 检查签名是否有效(使用相同的密钥和算法进行验证),确保令牌未被篡改。

    • 检查令牌是否过期(检查exp声明)。

    • 如果一切有效,就从Payload中解析出用户信息(如userId),并进行后续业务处理。

  6. 响应请求:服务器验证通过后,返回客户端请求的资源或数据。


常用的Java JWT库

在Java中,你不需要自己实现JWT的编码、解码和签名逻辑,可以使用成熟的开源库:

  • jjwt:一个非常流行、易于使用的库。

  • java-jwt:Auth0公司提供的库,功能强大。

  • Nimbus JOSE + JWT:一个更全面、功能更丰富的库。

示例(使用jjwt库生成一个JWT):

java

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import java.security.Key;// 生成一个安全的密钥(生产环境中应从一个安全的配置文件中读取,而不是硬编码)
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);// 构建JWT
String jws = Jwts.builder().setSubject("1234567890") // 设置主题(通常是用户ID).claim("name", "John Doe") // 添加自定义声明.claim("admin", true)      // 添加自定义声明.setIssuedAt(new Date())   // 设置签发时间.setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 设置过期时间(1小时后).signWith(key)             // 使用密钥签名.compact();                // 压缩生成最终的字符串System.out.println(jws);

注意事项

  • 安全存储密钥:签名密钥是安全的核心,必须妥善保管,绝不能泄露。

  • 不要在不安全的信道传输敏感信息:JWT的Payload只是Base64编码,并不是加密的(除非你使用了JWE)。绝对不要在JWT中存放密码等敏感信息

  • 管理Token过期:一定要为JWT设置合理的过期时间(exp),以减少令牌被盗用的风险。

  • 选择合适的存储方式:在浏览器端,存储在LocalStorage有XSS风险,存储在Cookie有CSRF风险,需要根据实际情况权衡并做好相应的安全防护。

总结来说,在Java项目中,JWT是一种用于实现无状态、可扩展的分布式用户认证和授权的令牌机制,它是构建现代API和微服务架构的基石之一。

http://www.dtcms.com/a/439844.html

相关文章:

  • 如何查看网站seo网站质量度
  • 网站域名登陆地址查询网站开发人员的职责
  • 如何申请我的网站168分类信息发布网
  • 音乐网站界面如何保持网站中的图片
  • 建设网站报价南昌做网站的公司有哪些
  • 654.最大二叉树(二叉树算法)
  • 网站运营 策划 推广 维护网络营销方式给消费者消费行为模式带来的影响
  • 网站谷歌seo做哪些淮安做网站的公司
  • 已经有域名如何做网站内蒙古呼和浩特职业学院
  • 海沧网站建设视频网站开发php
  • 网站开发及维护招聘wordpress站点版权设置
  • 网站建设的合同书网站次年续费
  • 什么网站可以做数据调查问卷网站备案后 换服务器
  • 最新做做网站免费2014 个人网站备案
  • cpa怎么做网站wordpress-saas
  • Cliproxy代理IP:解锁Reddit多账号运营的安全与效率密码
  • 个人房产信息查询网站phpcms 中英文网站
  • 营销型网站及原因有哪些方面宣传册模板
  • 安徽网站建设优化推广企业网站的内容模块
  • 湖南省水利水电建设工程学校网站wordpress文章背景
  • 网站建设公司包括哪些板块广州免费孕检
  • 构建AI智能体:五十二、反应式智能体:AI世界的条件反射,真的可以又快又稳
  • 凡科网做网站贵吗刚刚发生了一件大事
  • [创业之路-671]:半导体暗场(Darkfield)无图形检测与明场(Brightfield)有图形检测的光源技术对比
  • 动易门户网站价格猪八戒网做网站如何
  • 学术会议网站怎么做wordpress 海 主题
  • vs2015 建设微网站做视频网站用网站空间还是服务器
  • 闵行网站制作设计公司外贸营销型网站建设的技巧
  • 网站ui设计基础直播营销策划方案
  • 用网站做自我介绍创建购物平台需要什么