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

网站天下网站建设 辉煌电商

网站天下,网站建设 辉煌电商,wordpress修改后台,wordpress网站正在建设中认识并使用JWT 一、互联网世界的用户认证二、对JWT的基本认知三、JWT的原理1 Header2 Payload3 Signature4 [参考资料](https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html) 四、使用JWT1、引入依赖2、jwt的生成与解析3、测试3.1 生成jwt3.2 解析jwt 一、互… 认识并使用JWT 一、互联网世界的用户认证二、对JWT的基本认知三、JWT的原理1 Header2 Payload3 Signature4 [参考资料](https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html) 四、使用JWT1、引入依赖2、jwt的生成与解析3、测试3.1 生成jwt3.2 解析jwt 一、互联网世界的用户认证 以调用openai的api为例 curl https://api.openai.com/v1/chat/completions -H Content-Type: application/json -H Authorization: Bearer $OPENAI_API_KEY -d {model: gpt-3.5-turbo,messages: [{role: system,content: You are a poetic assistant, skilled in explaining complex programming concepts with creative flair.},{role: user,content: Compose a poem that explains the concept of recursion in programming.}]}Authorization: Bearer $OPENAI_API_KEY其中$OPENAI_API_KEY便是用于用户认证的token。那用户怎么获取这个token呢 一般咱先通过用户名和密码登录网站然后网站分配一个token。在Java中有JWT技术来实现这种需求。 二、对JWT的基本认知 JWTJSON Web Token 我理解将json格式的数据转换为在Web中用于用户认证的token。 JWT是一种基于Token的用户认证技术。思路当用户登录时服务器会创建一个包含用户信息的JWT并将其发送回用户。然后用户可以使用该Token来进行后续的授权请求。在每次请求中服务器都会验证JWT来确认用户的身份然后才会处理请求。 三、JWT的原理 JWT由三部分组成头部Header、载荷Payload和签名Signature。 1 Header Header 部分原本是一个 JSON 对象用于描述 JWT 的元数据如下所示 {alg: HS256,typ: JWT }1alg属性表示签名的算法默认是 HMAC SHA256写成 HS256 2typ属性表示这个令牌token的类型JWT统一写为JWT。 2 Payload Payload 部分原本也是一个 JSON 对象用来存放实际需要传递的数据。JWT 规定了7个官方字段供选用。 1 iss (issuer)签发人 2exp (expiration time)过期时间 3sub (subject)主题 4aud (audience)受众 5nbf (Not Before)生效时间 6iat (Issued At)签发时间 7jti (JWT ID)编号 除了官方字段咱还可以在这个部分定义私有字段如下所示 {name: Forrest,admin: true }注意不要把秘密信息放在这个JSON对象中因为通常这个JSON对象被转换为字符串后默认是不加密的这就会被别人解析回JSON对象里面的信息就暴露了。 3 Signature Signature 部分是对前两部分的签名防止数据篡改。首先需要指定一个密钥secret。这个密钥只有服务器才知道不能泄露给用户。然后使用 Header 里面指定的签名算法默认是 HMAC SHA256按照下面的公式产生签名 HMACSHA256(base64UrlEncode(header) . base64UrlEncode(payload),secret)算出签名以后把 Header、Payload、Signature 三个部分拼成一个字符串每个部分之间用点.分隔就可以返回给用户。 4 参考资料 四、使用JWT 1、引入依赖 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version /dependency还必须引入 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.11.3/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.11.3/version /dependency否则会报错 java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature at com.fasterxml.jackson.databind.ObjectMapper.init(ObjectMapper.java:656) at com.fasterxml.jackson.databind.ObjectMapper.init(ObjectMapper.java:558) … 2、jwt的生成与解析 public class JwtUtils {private static final String secret IntelliJ IDEA;// 7天有效期public static final long EXPIRE_TIME 1000 * 60 * 60 * 24 * 7;/*** 生成jwt*/public static String encode(MapString, Object headerMap, MapString, Object playloadMap) {return Jwts.builder().setHeader(headerMap).setClaims(playloadMap).signWith(SignatureAlgorithm.HS256, secret).compact();}/*** 解析jwt*/public static MapString, Object decode(String jwt) {return Jwts.parser().setSigningKey(secret).parseClaimsJws(jwt).getBody();} }3、测试 3.1 生成jwt Test public void testEncode() {MapString, Object headerMap new HashMap();headerMap.put(type, JWT);headerMap.put(alg, HS256);MapString, Object playloadMap new HashMap();playloadMap.put(username, Forrest);playloadMap.put(exp, System.currentTimeMillis() JwtUtils.EXPIRE_TIME);playloadMap.put(jti, UUID.randomUUID().toString());for (Map.EntryString, Object entry : playloadMap.entrySet()) {System.out.println(Key entry.getKey() , Value entry.getValue());}String jwt JwtUtils.encode(headerMap, playloadMap);System.out.println(jwt); }Key exp, Value 1706023265921 Key jti, Value c212fde2-abf4-4149-9c48-c55c1a029e79 Key username, Value Forrest eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJleHAiOjE3MDYwMjMyNjU5MjEsImp0aSI6ImMyMTJmZGUyLWFiZjQtNDE0OS05YzQ4LWM1NWMxYTAyOWU3OSIsInVzZXJuYW1lIjoiRm9ycmVzdCJ9.t-rnO5CgC5DuNShsWIHxu_HKAgIU75tDQnlDcIBCmm0 3.2 解析jwt Test public void testDecode() {String jwt eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJleHAiOjE3MDYwMjI3MzM2MTUsImp0aSI6ImFkMTRiZDEyLWNlN2EtNDBjNi1iYTJkLWU0MDllMTY4ZjIwYyIsInVzZXJuYW1lIjoiRm9ycmVzdCJ9.NuNW5PckkwWpFRobreKjrU6pDdosHnc3J2KhwxFW4xU;MapString, Object map JwtUtils.decode(jwt);for (Map.EntryString, Object entry : map.entrySet()) {System.out.println(Key entry.getKey() , Value entry.getValue());} }Key exp, Value 1706023265921 Key jti, Value c212fde2-abf4-4149-9c48-c55c1a029e79 Key username, Value Forrest
http://www.pierceye.com/news/527104/

相关文章:

  • 宁夏建设教育协会网站医院网站跳出率高
  • 网站建设佰首选金手指二关于网站建设的职位
  • 网站建设公司商务网站项目书中堂东莞网站建设
  • 欧美品牌网站设计wordpress好用的文章编辑器
  • 长春网站建设q479185700強wordpress数学公式的代码
  • 郑州软件app开发公司嘉兴优化网站排名
  • 可以建微信网站的做网站的项目开发计划书
  • 湖北网站建设模板下载太原线上教学
  • 西宁网站建设开发公司开发网站监控工具
  • 外贸网站优势杭州百度快速排名提升
  • 制作个人网站论文ipage wordpress
  • 十堰建设网站首页优化大师免安装版
  • 深圳建设企业网站公司敬请期待素材
  • 网络营销网站建设课程wordpress 文章描述
  • 网站制作有什么好的介绍北京网站建设及推广招聘
  • 殡仪馆做网站的好处制作响应式网站报价
  • 网站建设平台杭州做网站前台后台是怎么连接的
  • 太原市0元网站建设wordpress wcps
  • 怎么自己做免费网站wordpress 优酷通用代码自适应
  • 网站设置三方交易深圳品牌设计公司招聘
  • 东莞响应式网站哪家好网站开发应用到的技术名词
  • 背景做网站公司docker wordpress
  • 吉林建设监理协会网站网站 服务器 虚拟主机
  • 食品公司网站设计项目和男朋友都是第一次做网站
  • wordpress the7.6搜索引擎优化工作原理的先后顺序
  • 淘宝不允许 网站建设微网站如何做宣传
  • 海西高端网站建设价格怎样开通微信小商店
  • 学校校园网站建设方案南宁有做门户网站的公司吗
  • 一般电商都是在哪些网站上做wordpress 获取所有子页面
  • 长沙岳麓区网站开发网址大全首页