JWT 安全令牌
1 package com.reliable.yang.utils;
2
3 import io.jsonwebtoken.Jwt;
4 import io.jsonwebtoken.JwtBuilder;
5 import io.jsonwebtoken.Jwts;
6 import io.jsonwebtoken.SignatureAlgorithm;
7
8 import java.util.Date;
9 import java.util.HashMap;
10 import java.util.Map;
11
12 /**
13 * @author Administrator
14 * @date 2022-06-21 20:53
15 */
16 /*
17 jwt 可以生成 一个加密的token,做为用户登录的令牌,当用户登录成功之后,发放给客户端。
18 请求需要登录的资源或者接口的时候,将token携带,后端验证token是否合法。
19 jwt 有三部分组成:A.B.C
20 A:Header,{"type":"JWT","alg":"HS256"} 固定
21 B:playload,存放信息,比如,用户id,过期时间等等,可以被解密,不能存放敏感信息
22 C: 签证,A和B加上秘钥 加密而成,只要秘钥不丢失,可以认为是安全的。
23 jwt 验证,主要就是验证C部分 是否合法。
24 */
25 public class JWTUtils {
26 // 秘钥 jwtToken
27 private static final String jwtToken = "123456reliable!@###$$";
28
29 public static String createToken(Long userId){
30 Map<String,Object> claims = new HashMap<>();
31 claims.put("userId",userId);
32 JwtBuilder jwtBuilder = Jwts.builder()
33 .signWith(SignatureAlgorithm.HS256, jwtToken) // 签发算法,秘钥为jwtToken
34 .setClaims(claims) // body数据,要唯一,自行设置
35 .setIssuedAt(new Date()) // 设置签发时间
36 .setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 60 * 1000));// 一天的有效时间
37 String token = jwtBuilder.compact();
38 return token;
39 }
40
41 public static Map<String, Object> checkToken(String token){
42 try {
43 Jwt parse = Jwts.parser().setSigningKey(jwtToken).parse(token);
44 return (Map<String, Object>) parse.getBody();
45 }catch (Exception e){
46 e.printStackTrace();
47 }
48 return null;
49 }
50
51 // 测试
52 public static void main(String[] args) {
53 String token = JWTUtils.createToken(100L);
54 System.out.println("生成的令牌为: "+token);
55
56 Map<String,Object> map = JWTUtils.checkToken(token);
57 System.out.println("获取结果: "+map.get("userId"));
58
59 }
60 }

JWT 安全令牌的更多相关文章
- SpringCloud、Nginx高并发核心编程 【2020年11月新书 】
文章太长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典极品 : 三大本< Java 高并发 三部曲 > 面试 + 大厂 + 涨薪必备 疯狂创客圈 经 ...
- ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口
目录 ① 存储角色/用户所能访问的 API ② 实现 IAuthorizationRequirement 接口 ③ 实现 TokenValidationParameters ④ 生成 Token ⑤ ...
- Jwt验证登录
练习模板:https://gitee.com/zh1446802857/swagger-multi-version-api.git Jwt在我的 认知里,是一套门锁.别人(用户)需要用到你的接口 的时 ...
- 生产事故-走近科学之消失的JWT
入职多年,面对生产环境,尽管都是小心翼翼,慎之又慎,还是难免捅出篓子.轻则满头大汗,面红耳赤.重则系统停摆,损失资金.每一个生产事故的背后,都是宝贵的经验和教训,都是项目成员的血泪史.为了更好地防范和 ...
- 看图理解JWT如何用于单点登录
单点登录是我比较喜欢的一个技术解决方案,一方面他能够提高产品使用的便利性,另一方面他分离了各个应用都需要的登录服务,对性能以及工作量都有好处.自从上次研究过JWT如何应用于会话管理,加之以前的项目中也 ...
- JWT实现token-based会话管理
上文<3种web会话管理的方式>介绍了3种会话管理的方式,其中token-based的方式有必要从实现层面了解一下.本文主要介绍这方面的内容.上文提到token-based的实现目前有一个 ...
- 用JWT来保护我们的ASP.NET Core Web API
在上一篇博客中,自己动手写了一个Middleware来处理API的授权验证,现在就采用另外一种方式来处理这个授权验证的问题,毕竟现在也 有不少开源的东西可以用,今天用的是JWT. 什么是JWT呢?JW ...
- Laravel-lumen 配置JWT
具体步骤参照: [ JWT & Lumen ] 第一步 在项目根目录 执行命令 composer require tymon/jwt-auth第二步 在 bootstrap/app.php 的 ...
- .net core Jwt 添加
Jwt 已经成为跨平台身份验证通用方案,如不了解请关注:https://jwt.io/. 为了和微软其他验证模块有个比较好的衔接,项目中采用了微软开发的jwt组件: System.IdentityMo ...
- 多说评论系统API调用和本地身份说明(JWT)
多说评论系统是一个非常好用的第三方评论插件,聚合了大多数的SNS平台账号登录和分享功能,UI也很不错. 作为网站快速接入评论系统,多说是一个比较好的选择,其也提供了一些实用的API去满足定制化需求. ...
随机推荐
- Springboot实现remember-me记住我功能
1.什么是remeber-me? remeber-me即记住我功能,是我们在登录web系统时的常见勾选项.当我们登录一个web系统时除了输入常规的用户名.密码后还可以勾选记住我选项(假设该系统提供了该 ...
- 使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细介绍(抽象版一)
目前市面上有两种机房 一种是普通机房 一种是由微模块组成的机房,本文主要介绍普通机房的抽象化体现模式. 抽象机房模式:机房展示过程中,我们需要对机房进行建模,当遇到大量机房需要建模时,这无疑是巨大工作 ...
- ADVMP 三代壳(vmp加固)原理分析(执行流程)
由于在加壳时插入了System.loadLibrary("advmp");,看一下JNI_OnLoad JNIEXPORT jint JNICALL JNI_OnLoad(Java ...
- FastAPI中全局异常处理
装饰器版本自定义异常 1.首先我们定义三个文件,分别为exception.py,main.py, user.py 2.自定义异常需要继承HTTPException,该异常可以从fastapi中直接导入 ...
- typing模块中Protocol协议的使用
说明 在 Python 的 typing 模块中,Protocol 是一个用于定义协议(Protocol)的类. 协议是一种形式化的接口,定义了一组方法或属性的规范,而不关心具体的实现.Protoco ...
- Flask学习(三)
数据库操作 数据库驱动(drivers)模块:pymysql.MySQLDB ORM ORM 全拼Object-Relation Mapping,中文意为 对象-关系映射.主要实现模型对象到关系数据库 ...
- jupyter notebook更改默认工作目录
jupyter notebook默认配置路径:C:\Users\Administrator\.jupyter\jupyter_notebook_config.py 如果找不到配置文件,可以生成一个 j ...
- 前后端分离项目(七):实现"添加"功能(前端视图)
好家伙,本篇用于测试"添加"接口,为后续"用户注册"功能做铺垫 (完整代码在最后) 我们要实现"添加"功能 老样子我们先来理清一下思路, ...
- 【Azure 事件中心】Event Hubs如何获取其中存放的历史消息
问题描述 使用Azure Event Hub服务,除了正常的生产,消费消息以外,如果想拿到Event Hub中存储的历史消息?有什么方法呢? 问题解答 获取 Event Hubs 存储的历史消息,首先 ...
- spark 下java list 或者scala list 转DataFrame or DataSet 总结
一.JAVA list 转 DataFrame or DataSet case class CaseJava( var num: String, var id: String, var start_t ...