首页 > 其他分享 >jwt工具类

jwt工具类

时间:2023-05-11 09:56:27浏览次数:32  
标签:return String request jwt static jwtToken 工具 public

public class JwtUtils {

    public static final long EXPIRE = 1000 * 60 * 60 * 24;
    public static final String APP_SECRET = "ukc8BDbRigUDaY6pZFfWus2jZWLPHO";

    public static String getJwtToken(String id, String nickname){

        String JwtToken = Jwts.builder()
                .setHeaderParam("typ", "JWT")
                .setHeaderParam("alg", "HS256")
                .setSubject("zymz-user")
                .setIssuedAt(new Date())
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRE))
                .claim("id", id)
                .claim("nickname", nickname)
                .signWith(SignatureAlgorithm.HS256, APP_SECRET)
                .compact();

        return JwtToken;
    }

    /**
     * 判断token是否存在与有效
     * @param jwtToken
     * @return
     */
    public static boolean checkToken(String jwtToken) {
        if(StringUtils.isEmpty(jwtToken)) return false;
        try {
            Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 判断token是否存在与有效
     * @param request
     * @return
     */
    public static boolean checkToken(HttpServletRequest request) {
        try {
            String jwtToken = request.getHeader("token");
            if(StringUtils.isEmpty(jwtToken)) return false;
            Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 根据token获取会员id
     * @param request
     * @return
     */
    public static String getMemberIdByJwtToken(HttpServletRequest request) {
        String jwtToken = request.getHeader("token");
        if(StringUtils.isEmpty(jwtToken)) return "";
        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(APP_SECRET).parseClaimsJws(jwtToken);
        Claims claims = claimsJws.getBody();
        return (String)claims.get("id");
    }
}

关注我的公众号SpaceObj 领取idea系列激活码

标签:return,String,request,jwt,static,jwtToken,工具,public
From: https://www.cnblogs.com/zhanghongrui/p/17390139.html

相关文章

  • 小工具
    pm-run-allnpm-run-all可以轻易的串行或者并行各种脚本。https://www.npmjs.com/package/npm-run-all使用方法://可以异步同时执行两个脚本{  "scripts": {    "dev:esm": "run-p watch:esm serve:vue3",  }}......
  • 构建工具
    Vite:下一代前端工具Vite(读音类似于[weɪt],法语,快的意思)是一个由原生ESModule驱动的Web开发构建工具。在开发环境下基于浏览器原生ESimports开发,在生产环境下基于Rollup打包。虽然2021年webpack仍然是毫无争议的构建之王,但活跃的前端社区,终于出现了一位能打......
  • Go语言及开发工具LiteIDE的安装
    安装平台macGo语言安装下载go的安装包下载页面:https://golang.org/dl/另外参考http://godoc.golangtc.com/doc/install#install下载完go语言的安装包之后进行安装mac上默认的安装路径是/usr/local/go设置环境变量exportGOROOT=$HOME/goexportPATH=$PATH:$GOROOT/binGo语言开发......
  • 6个在线正则表达式工具
    正则表达式可以让开放人员更加有效的操纵文本内容,在各种各样的开发中经常会遇到需要正则表达式解决的问题,比如验证邮箱,验证网址,一些小偷程序的批量替换等等。熟练的应用正则表达式可以方便于很多文本的操作,加快开发的进度。但是正则表达式并不是一个非常简单......
  • 基于机器学习和人工智能的数据质量测试工具
    一、比较知名的工具(非完全免费)Trifacta:Trifacta:是一种自动数据质量检测和数据预处理工具,它使用机器学习算法来自动识别数据中的潜在问题,并建议数据清理操作。TalendDataQuality:TalendDataQuality是一种数据质量和数据清理工具,它使用机器学习算法来自动识别数据中的问题,......
  • ReactRedux工具包reduxjs/toolkit的使用
    首先可以先看一下Redux如何工作store负责存储数据,相当于仓库,action负责dispatch派发数据,reducer负责接收处理数据然后交给store(个人理解可能有些偏差欢迎交流斧正)传统redux写法(旧)//reducerconstcounterReducer=(state={counter:0},action)=>{if(action.type......
  • [系统性能优化实践]JVM进阶实战之监控工具(Prometheus)
    1Prometheus监控SpringCloudGateway1.1简述API网关作为应用服务与外部交互的入口,通过对API网关的监控,可以清晰的知道应用整体的请求量,以便根据不同的并发情况进行扩容处理。对API网关的监控也是相当必要的。通过Prometheus监控Gateway与监控普通Springboot项目几乎......
  • 用Scrum工具Leangoo领歌做敏捷需求管理
    ​上一篇我们介绍了如何管理产品路线图(https://www.cnblogs.com/shineshine/p/17387367.html),这一篇我们介绍下如何管理产品Backlog。史诗故事通常都是比较大的故事,所以我们需要将史诗故事规划到产品Backlog中,以便让团队在产品Backlog中对史诗故事进行拆分,将其拆解为更小的用户故......
  • PMP工具与技术-4.9-1 规划采购管理工具与技术
    ##############################################################上一章,我们写了关于规划采购过程中的文件内容,包括合同类型选择、采购管理计划、采购策略、招标文件、采购工作说明书(SOW)等内容。这一章主要说明规划采购管理过程中适用的工具。###############################......
  • 用Leangoo领歌Scrum敏捷开发工具管理产品路线图?
    ​这里分享一下我们在用的一款敏捷开发项目管理软件,Leangoo领歌。看板的管理方式,可以很好的支持Scrum敏捷开发。有saas模式也有私有部署模式。Leangoo区别于传统项目管理软件,Leangoo基于最新web实时通信技术实现了所见即所得的可视化看板协同。项目的需求、任务、问题、缺陷都......