import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Service; import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.util.Base64;
import java.util.UUID; /**
* Create by liping on 2018/9/25
*/
@Service
public class JWTService {
private static final String encodekeys = "liping"; private static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS512;
private static Key key; // @Value("${com.idoipo.jwt.encodedKey}")
// private String encodedKey; /**
* 初始化操作 @PostConstruct初始化完成后执行
*/
// @PostConstruct
// public void init() {
// signatureAlgorithm = SignatureAlgorithm.HS512;
// key = deserializeKey(encodedKey);
// } /**
* 生成加密解密key
* @return
*/
public static Key deserializeKey() {
byte[] decodedKey = Base64.getDecoder().decode(encodekeys); Key key = new SecretKeySpec(decodedKey, JWTService.signatureAlgorithm.getJcaName());
return key;
} /**
* 创建token 参数应该为自定义模型去传,用来设置token所携带字段
* @return
*/
public static String createToken(){
key = deserializeKey();
String token = Jwts.builder()
.setSubject(UUID.randomUUID().toString())
.claim("userName", "liping")
.setIssuer("lp")
.setAudience("xixi")
.signWith(signatureAlgorithm, key).compact();
return token;
} public static String parseToken(String token){
key = deserializeKey();
Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
return claims.get("userName").toString();
} public static void main(String[] args) {
String token = JWTService.createToken();
System.out.println(token);
String userName = JWTService.parseToken(token);
System.out.println(userName);
} }

springcloud安全控制token的创建与解析的更多相关文章

  1. token的创建及解析

    <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifac ...

  2. 使用dom4j创建和解析xml文件

    使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...

  3. python中文json串创建与解析

    下面代码,举例说明了json如何创建和解析含有中文的json串: #coding=gbk import os import sys reload(sys) sys.setdefaultencoding ...

  4. 使用dom4j创建和解析xml

    之前工作中用到了,相信写java的都会碰到xml,这里写了两个方法,创建和解析xml,废话不多说,直接上代码 package xml; import java.io.File; import java ...

  5. 使用Dom4j对XML文档创建与解析

    创建XML文件: public class Dom4jCreateXml { public void testCreatXml() { //创建文档对象 Document document = Doc ...

  6. (转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解

    使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解   本文用代码简单介绍cjson的使用方法,1)创建json,从json中获取数据.2)创建json数组和解析json数组 1. 创 ...

  7. [转帖] k8s dashboard 的创建 升级 以及 admin token的创建和简单使用.

    Kubernetes Dashboard中的身份认证详解 https://jimmysong.io/posts/kubernetes-dashboard-upgrade/ Thu Nov 2, 201 ...

  8. Java创建和解析Json数据方法(三)——json-lib包的使用

    (三)json-lib包的使用         这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...

  9. Unity3D_(数据)LitJson创建和解析Json

    LitJson github: 传送门 JsonUtility创建和解析Json 传送门 LitJson.dll百度云盘 传送门 密码:p1py 加载LitJson.dll到Unity中 在Asset ...

随机推荐

  1. Python collections系列之单向队列

    单向队列(deque) 单项队列(先进先出 FIFO ) 1.创建单向队列 import queue q = queue.Queue() q.put(') q.put('evescn') 2.查看单向 ...

  2. Linux评估 CPU使用情况

    评价参数 1)CPU utilization:最直观最重要的就是CPU的使用率.如果长期超过80%,则表明CPU遇到了瓶颈:2)User time: 用户进程使用的CPU:该数值越高越好,表明越多的C ...

  3. ORA-28547:connection to server failed, probable Oracle Net admin error错误,解决方法

    当用navicat连接oralce数据库时报ORA-28547错误时,直接懵逼了,上网查了资料说是navicat自带的oci.dll文件的版本和服务器端的oralce数据库的版本不一致造成的. 修改O ...

  4. (转)配置ORACLE 11g绿色版客户端和PLSQL环境

    本文转载自:http://my.oschina.net/jang/blog/83009 本方法是通过使用ORACLE官方提供的精简版客户端,即绿色免安装的客户端. 下载地址(此处提供的是官方各版本下载 ...

  5. spring容器启动的三种方式

    一.在Web项目中,启动Spring容器的方式有三种,ContextLoaderListener.ContextLoadServlet.ContextLoaderPlugin. 1.1.监听器方式: ...

  6. Hudson和Jenkins的关系

    Jenkins is an open source continuous integration tool written in Java. The project was forked from H ...

  7. String字符串补0操作常见方法

     String前补0 java的String字符串补0或空格 方法一:自己写的方法 /* *数字不足位数左补0** @param str* @param strLength*/public stati ...

  8. 使用pip一次升级所有安装的Python包(太牛了)

    import pip from subprocess import call for dist in pip.get_installed_distributions(): call("pip ...

  9. FireMoneky 菜单

    FireMoneky 菜单 TPopup是容器,里边摆放一排button也可. TPopup + ListBox 也可以用弹出窗体实现,form上放一排按钮,功效类似,但是form在fmx下不能半屏显 ...

  10. SQL server 2008安装教程

    下载SQL server 2008 r2(网上资源很多,这里给出一个:安装) 解压后右键以管理员权限打开set-up 这里可能会出现问题:.net framework 3.5未安装,可以参考 快速安装 ...