二、基于JWT的token认证实现
JWT:JSON Web Token,其实token就是一段字符串,由三部分组成:Header,Payload,Signature
1、引入依赖

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

2、设置密钥和生存时间

    //设置过期时间private static final long EXPIRE_TIME = 240 * 60 * 1000;//token秘钥private static final String TOKEN_SECRET = "f26e587c28064d0e855e72c0a6a0e618";

3、实现签名方法

public static String sign(String username, String permission) {String token = "";try {//过期时间Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);//秘钥及加密算法Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);//设置头部信息Map<String, Object> header = new HashMap<>(2);header.put("typ", "JWT");header.put("alg", "HS256");//携带username,password信息,生成签名return JWT.create().withHeader(header).withClaim("loginName", username).withClaim("permission", permission).withExpiresAt(date).sign(algorithm);} catch (Exception e) {e.printStackTrace();return null;}}

4、验证token

public static boolean verify(String token){/*** @desc   验证token,通过返回true* @params [token]需要校验的串**/try {Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);JWTVerifier verifier = JWT.require(algorithm).build();DecodedJWT jwt = verifier.verify(token);return true;}catch (Exception e){e.printStackTrace();return false;}}public static String parseJWT(String token){/*** @desc   解密token,返回一个map* @params [token]需要校验的串**/DecodedJWT decodeToken = JWT.decode(token);return decodeToken.getClaim("loginName").asString();}public static boolean isJwtExpired(String token){/*** @desc 判断token是否过期* @author lj*/try {DecodedJWT decodeToken = JWT.decode(token);return decodeToken.getExpiresAt().before(new Date());} catch(Exception e){return true;}}}

5、token解码

public static String parseJWT(String token){/*** @desc   解密token,返回一个map* @params [token]需要校验的串**/DecodedJWT decodeToken = JWT.decode(token);return decodeToken.getClaim("loginName").asString();}

6、判断token是否过期

public static boolean isJwtExpired(String token){/*** @desc 判断token是否过期* @author lj*/try {DecodedJWT decodeToken = JWT.decode(token);return decodeToken.getExpiresAt().before(new Date());} catch(Exception e){return true;}}}

7、测试

public static void main(String[] args) {String username ="zhangsan";String password = "123";String token = token(username,password);System.out.println(token);boolean b = verify(token);System.out.println(b);}

三、完整的Token工具类代码

public class JwtUtil {//设置过期时间private static final long EXPIRE_TIME = 240 * 60 * 1000;//token秘钥private static final String TOKEN_SECRET = "f26e587c28064d0e855e72c0a6a0e618";public static String sign(String username, String permission) {String token = "";try {//过期时间Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);//秘钥及加密算法Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);//设置头部信息Map<String, Object> header = new HashMap<>(2);header.put("typ", "JWT");header.put("alg", "HS256");//携带username,password信息,生成签名return JWT.create().withHeader(header).withClaim("loginName", username).withClaim("permission", permission).withExpiresAt(date).sign(algorithm);} catch (Exception e) {e.printStackTrace();return null;}}public static boolean verify(String token){/*** @desc   验证token,通过返回true* @params [token]需要校验的串**/try {Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);JWTVerifier verifier = JWT.require(algorithm).build();DecodedJWT jwt = verifier.verify(token);return true;}catch (Exception e){e.printStackTrace();return false;}}public static String parseJWT(String token){/*** @desc   解密token,返回一个map* @params [token]需要校验的串**/DecodedJWT decodeToken = JWT.decode(token);return decodeToken.getClaim("loginName").asString();}public static boolean isJwtExpired(String token){/*** @desc 判断token是否过期* @author lj*/try {DecodedJWT decodeToken = JWT.decode(token);return decodeToken.getExpiresAt().before(new Date());} catch(Exception e){return true;}}}

Java实现Token的生成与验证相关推荐

  1. java token生成和验证_Java Token登录验证 生成解析Token

    借鉴参考 Java Token登录验证 使用jjwt生成和解析JWT java基于token验证之登陆验证 等 什么是Token? 我的理解来说 token就是你访问服务器的口令,只要token合法, ...

  2. Java实现Token登录验证(基于JWT的token认证实现)

    文章目录 一.JWT是什么? 二.使用步骤 1.项目结构 2.相关依赖 3.数据库 4.相关代码 三.测试结果 一.JWT是什么? 在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流 ...

  3. 【.NET Core项目实战-统一认证平台】第十二章 授权篇-深入理解JWT生成及验证流程...

    上篇文章介绍了基于Ids4密码授权模式,从使用场景.原理分析.自定义帐户体系集成完整的介绍了密码授权模式的内容,并最后给出了三个思考问题,本篇就针对第一个思考问题详细的讲解下Ids4是如何生成acce ...

  4. [微信]微信JS-SDK权限签名生成及验证

    目录 一.获取access_token 二.获取jsapi_ticket 三.拼接参数,SHA-1加密获取签名 四.验证签名 在使用微信的分享.图片等众多功能时,通常需要在config接口注入权限验证 ...

  5. Java Web Token 之 JJWT 使用

    文章目录 Java Web Token 之 JJWT 使用 1. JJWT 简介 2. JJWT 引入 2.1 Maven依赖 3. 快速入门 3.1 构建 JWT 3.2 解析 JWT 4. JWT ...

  6. java基于token的认证,Java实现基于token认证

    随着互联网的不断发展,技术的迭代也非常之快.我们的用户认证也从刚开始的用户名密码转变到基于cookie的session认证,然而到了今天,这种认证已经不能满足与我们的业务需求了(分布式,微服务).我们 ...

  7. php token的生成和使用

    原文连接:http://ukagaka.github.io/php/2018/05/08/JWT.html 1. 为什么要使用tokent进行登录 前后端分离或者为了支持多个web应用,那么原来的co ...

  8. jwt 私钥_JSON Web Token (JWT)生成Token及解密实战。

    昨天讲解了JWT的介绍.应用场景.优点及注意事项等,今天来个JWT具体的使用实践吧. 从JWT官网支持的类库来看,jjwt是Java支持的算法中最全的,推荐使用,网址如下. 下面来看看如何使用jjwt ...

  9. JSON Web Token (JWT)生成Token及解密实战

    转载自 JSON Web Token (JWT)生成Token及解密实战 昨天讲解了JWT的介绍.应用场景.优点及注意事项等,今天来个JWT具体的使用实践吧. 从JWT官网支持的类库来看,jjwt是J ...

最新文章

  1. java一个参数 多个值_Spring里有类似@RequestParam的办法去绑定一个多值参数吧
  2. Oracle11.2新特性之listagg函数 (行列转换)
  3. 如何查看linux系统服务器磁盘大小和文件占用情况
  4. (转)让你受益终身的10个Word实用技巧
  5. python二维游戏示例_Python实现的井字棋(Tic Tac Toe)游戏示例
  6. ASP.NET Core之跨平台的实时性能监控
  7. OpenShift上的无痛集装箱化JBoss通用贷款处理
  8. html选中列表整列变色,excel选中行变色完整代码和动画效果
  9. backward理解
  10. PAT乙级(1031 查验身份证)
  11. NumPy Beginner's Guide 2e 带注释源码 二、NumPy 基础入门
  12. 苹果任命软件主管凯文•林奇为“苹果汽车”项目负责人
  13. c常用算法程序集_10万赞的AI算法集:含python,java,C,C++多种语言
  14. 串灯控制盒去掉怎么接_仿木地板瓷砖怎么样?仿木地板瓷砖怎么铺?
  15. mysql模糊匹配关键字_MySQL 关键字模糊匹配,并按照匹配度排序
  16. jsp+ssm+mysql实现图书馆预约占座管理系统 代码+数据库脚本+论文+答辩稿+开题报告+任务书
  17. linux window manager,Window manager (简体中文)
  18. 一个遮罩层怎么遮罩两个图层_遮罩动画只能有两个图层,上面为“遮罩层”,下面为“被遮罩”层。...
  19. Docker网络模式与资源控制管理
  20. 基于VUE的SSR技术-姜威-专题视频课程

热门文章

  1. 使用Footprint Expert PRO 制作AD封装
  2. python需要掌握的词汇量_【Python】测词汇量小工具
  3. 原生JS实现特效导航条
  4. 本地配置httpd服务
  5. 对nvidia optimus黑屏与背光调节问题的一点总结
  6. 武汉大学计算机博士导师 王丽娜,武汉大学计算机学院博士生导师简介:陈晶...
  7. 用户画像、物品画像【画像就是刻画物品或用户的特征;本质上就是给用户或物品贴标签】
  8. HandsFree ROS IMU
  9. 零基础CSS入门教程(31)–代码格式化
  10. 教你如何免费获取0.1米高精度卫星地图