public classJwtUtils {/*** 密钥*/

private static final String SECRET="xxxx";/*** 默认字段key:exp*/

private static final String EXP="exp";/*** 默认字段key:payload*/

private static final String PAYLOAD="payload";/*** 加密

*@paramobject 加密数据

*@parammaxTime 有效期(毫秒数)

*@param

*@return

*/

public static String encode(T object,longmaxTime){try{final JWTSigner signer=newJWTSigner(SECRET);final Map data=new HashMap<>(10);

ObjectMapper objectMapper=newObjectMapper();

String jsonString=objectMapper.writeValueAsString(object);

data.put(PAYLOAD,jsonString);

data.put(EXP,System.currentTimeMillis()+maxTime);returnsigner.sign(data);

}catch(IOException e) {

e.printStackTrace();return null;

}

}/*** 数据解密

*@paramjwt 解密数据

*@paramtClass 解密类型

*@param

*@return

*/

public static T decode(String jwt,ClasstClass) {final JWTVerifier jwtVerifier = newJWTVerifier(SECRET);try{final Map data =jwtVerifier.verify(jwt);//判断数据是否超时或者符合标准

if (data.containsKey(EXP) &&data.containsKey(PAYLOAD)) {long exp = (long) data.get(EXP);long currentTimeMillis =System.currentTimeMillis();if (exp >currentTimeMillis) {

String json=(String) data.get(PAYLOAD);

ObjectMapper objectMapper= newObjectMapper();returnobjectMapper.readValue(json, tClass);

}

}return null;

}catch(Exception e) {//e.printStackTrace();

return null;

}

}//解密token取出userId

public static T updateDecode(String jwt,ClasstClass){final JWTVerifier jwtVerifier = newJWTVerifier(SECRET);try{final Map data =jwtVerifier.verify(jwt);

String json=(String) data.get(PAYLOAD);

ObjectMapper objectMapper= newObjectMapper();returnobjectMapper.readValue(json, tClass);

}catch(Exception e) {//e.printStackTrace();

return null;

}

}public static void main(String[] args) throwsInterruptedException {//有效期10秒//加密://TestCenterAdministratorsVO test = new TestCenterAdministratorsVO();//test.setId(1L);//test.setLoginName("sa");//String token=encode(test,1000000);//System.out.println("TOKEN======="+token);// //Thread.sleep(10000);解密//TestCenterAdministratorsVO user=decode(token,TestCenterAdministratorsVO.class);//System.out.println(user.getId()+user.getLoginName());//removeDecode("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NDcwODkwNTYxNDgsInBheWxvYWQiOiJ7XCJpZFwiOjEsXCJuYW1lXCI6bnVsbCxcInBob25lTnVtYmVyXCI6bnVsbCxcImxvZ2luTmFtZVwiOlwic2FcIixcInNlcmlhbE51bWJlclwiOm51bGwsXCJ0eXBlXCI6bnVsbCxcInRlc3RDZW50ZXJJZFwiOm51bGwsXCJvcmdhbml6YXRpb25JZFwiOm51bGwsXCJtYWluU2l0ZUFkbWluXCI6ZmFsc2UsXCJhZG1pblwiOmZhbHNlLFwib3JnYW5pemF0aW9uTmFtZVwiOm51bGx9In0.FgYm4wSDhkZukqlRukjwvxQ1BM746AWQfCmGucMP3pc");

updateDecode("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NDcwMTgxNTU4OTYsInBheWxvYWQiOiJ7XCJpZFwiOjIwMTAwMDAzMyxcIm5hbWVcIjpcIuW6numTtuaYjFwiLFwicGhvbmVOdW1iZXJcIjpudWxsLFwibG9naW5OYW1lXCI6XCJwYW5neWluY2hhbmdcIixcInNlcmlhbE51bWJlclwiOm51bGwsXCJ0eXBlXCI6XCJNQUlOU0lURUFETUlOXCIsXCJ0ZXN0Q2VudGVySWRcIjo3OSxcIm9yZ2FuaXphdGlvbklkXCI6XCIwMDFcIixcIm1haW5TaXRlQWRtaW5cIjp0cnVlLFwiYWRtaW5cIjpmYWxzZSxcIm9yZ2FuaXphdGlvbk5hbWVcIjpudWxsfSJ9.yrYlU4djPPQyu1mneQgkVgLCEQiJ2pKkyX8EVw0NcY8",TestCenterAdministratorsVO.class);

}

}

java前后端分离账号错误_前后端分离,获取token,验证登陆是否失效相关推荐

  1. vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗

    背景: 汇总了下老王在其他平台的原创回复,欢迎关注老王原创公众号[软件老王],关注不迷路. 一.后端开发完接口才给出接口文档,合理吗? 本人所在的项目组做项目过程中,后端不会先给出接口文档,而是要等他 ...

  2. 在微信公众号后台进行基本配置时遇到系统发生错误,请稍后重试、token验证失败、请求URL超时的解决办法

    一."系统发生错误,请稍后重试" 这是因为你填写的URL地址,微信通过外网访问不到导致的,即URL不可以随便写,URL需要是一个外网可以访问的地址才行:本人使用的内外网穿透技术na ...

  3. java会员卡的绑定和解绑_前后端分离项目 — SpringSocial 绑定与解绑社交账号如微信、QQ...

    1.准备工作 申请QQ.微信相关AppId和AppSecret,这些大家自己到QQ互联和微信开发平台 去申请吧 还有java后台要引入相关的jar包,如下: org.springframework.s ...

  4. python后端开发的缺点_前后端分离优缺点

    前后端分离优缺点 之前有朋友问我:什么是前后端分离.他说北度搜到的都是大篇幅文章,看完还是很懵. 这里我简单总结下,如果有疏漏和不对的地方还请路过的网友指出. 一.先用一张图来解释 二.为什么要前后端 ...

  5. java前后端用json传值_前后端——json的传值与接收(springMvc)

    原标题:前后端--json的传值与接收(springMvc) 前端传值: 通过将要传输的数据封装为json,然后再通过ajax接收: JSON.stringify(data) 1 后端接收值只需要通过 ...

  6. 前后端分离项目token怎么验证_前后端分离,获取token,验证登陆是否失效

    public classJwtUtils {/*** 密钥*/ private static final String SECRET="xxxx";/*** 默认字段key:exp ...

  7. java 判断文件是否打开过_【后端开发】Java中如何判断文件是否被隐藏?(代码示例)...

    在Java中我们可以使用File类的isHidden()方法来判断指定文件是否被隐藏:下面本篇文章就来带大家认识一下isHidden()方法,了解如何使用isHidden()方法来判断文件是否被隐藏, ...

  8. 用java代码检查sql语法错误_您的SQL语法有错误;检查与MariaDB服务器版本对应的手册,以便在第1行'?'附近使用正确的语法...

    我正在使用 Java 和 JDBC 制作库存系统 . 我在查询表时遇到了这个错误 . com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException ...

  9. java 主动抛出 段错误_分段错误的原因?

    我在C中为扫描程序编写了一些代码,但我一直收到分段错误 . 奇怪的是,分段错误发生在代码完成时 . 我认为它与我的扫描功能和 file.get() 的使用有关,但这不会导致代码的那一行出现分段错误吗? ...

最新文章

  1. javascript之parseInt的用法分析
  2. IE6 浮动层背景不显示
  3. BZOJ1083: [SCOI2005]繁忙的都市
  4. KEIL和source insight混合编辑时,文本对齐的方式
  5. springMvc 注解@JsonFormat 日期格式化
  6. JavaME程序 Run Anywhere-- 利用反射机制来动态加载声
  7. Python——eventlet.wsgi
  8. Zabbix 通过 API 监控 k8s | 技巧
  9. 腾讯正式宣布成立技术委员会!要对组织架构下狠手
  10. 图解深度学习-梯度下降学习率可视化
  11. Win7-旗舰版-连接共享打印机时,报 0x00000bcb 错误
  12. 常用手机屏幕尺寸大小
  13. MATLAB 的串口连接
  14. matlab 结构体struct函数使用方法
  15. Ubuntu下安装多个Java及切换
  16. 破解navicat时出现No All Pattern Found File Already Patched
  17. 【BZOJ1112】砖块Klo
  18. 微信小程序图片预览禁止保存
  19. 从IDEA代码调试器的threads选项卡的一个细节谈如何学习编程
  20. 各个版本的Xcode/IOS SDK官网下载

热门文章

  1. android 8.0的imei简书,Android 8.0通知栏渠道,渠道组的适配和使用
  2. android虚拟键盘挡住布局,Android全屏时软键盘遮住输入框修改布局解决方案
  3. 小学生数学测试软件c语言流程图,小学生数学测试软件-C语言课程设计
  4. 解决if-else的另一种姿势:Map + 函数式接口方法!
  5. 皮一皮:考试了,全国统一舔狗学校招生考试!
  6. 皮一皮:沉迷游戏的下场...
  7. 「预警」尽快升级FastJson版本,避免恶意请求导致OOM!
  8. android 分辨率合集,Android编程之分辨率处理相关代码段合集
  9. java b kb mb gb 转换_java 上传文件大小转换为 GB/MB/KB/B
  10. 约瑟夫生死环游戏c语言程序,使用C++实现的约瑟夫生死游戏