• SSO 系统设计_token 生成


    Survive by day and develop by night.
    talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
    happy for hardess to solve denpendies.

    目录

    在这里插入图片描述

    概述

    需求:

    我们知道token 就是个字符串之类的,所以我们采用如下生成:
    1.增加依赖
    2. 代码编写
    3. 测试

    设计思路

    实现思路分析

    1.增加依赖

    
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.9.1</version>
            </dependency>
            <dependency>
                <groupId>com.auth0</groupId>
                <artifactId>java-jwt</artifactId>
                <version>3.4.0</version>
            </dependency>
    
    
    
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.0</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.3.0</version>
            </dependency>
            <dependency>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-core</artifactId>
                <version>2.3.0</version>
            </dependency>
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
                <version>1.1.1</version>
            </dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    2.代码编写

    package entity;
    
    public class UserEntity {
    
        private  String name;
        private String  id;
        private String phone;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    public String getToken(UserEntity userEntity ) {
            //设置算法为HS256
            SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
            Date now = new Date(System.currentTimeMillis());
            JwtBuilder builder = Jwts.builder()
                    //设置header
                    .setHeaderParam("typ", "JWT")
                    .setHeaderParam("alg", "HS256")
                    //设置iat
                    .setIssuedAt(now)
                    //设置payload的键值对
                    .claim("name", userEntity.getName())
                    .claim("id", userEntity.getId())
                    .claim("phone", userEntity.getPhone())
                    .setIssuer("AuroraLove")
                    //签名,需要算法和key
                    .signWith(signatureAlgorithm, SECRET_KEY);
            String jwt = builder.compact();
            return jwt;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.测试

        @Test
        public  void genTOken(){
    
            SsoServer ssoServer=new SsoServer();
            UserEntity userEntity=new UserEntity();
            userEntity.setId("1");
            userEntity.setName("2");
            userEntity.setPhone("3");
            System.out.println( ssoServer.getToken(userEntity));
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    参考资料和推荐阅读

    参考资料
    官方文档
    开源社区
    博客文章
    书籍推荐

    1. 暂无

    欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

  • 相关阅读:
    LeetCode每日一题(1648. Sell Diminishing-Valued Colored Balls)
    Java简系 - Java基础概念「二」
    论文生成器(论文、文献综述、开题报告……),Java、Python、C++
    计算属性和监听器
    【服务器数据恢复】HP StorageWorks系列服务器RAID5两块盘离线的数据恢复
    Python中利用SQLAlchemy模块操作MySQL数据库
    《软件方法(下)》第8章2023版连载(05)关于实体类
    Windows中毒应急方式
    springboot+老年康复中心信息管理系统 毕业设计-附源码250859
    HCNP Routing&Switching之组播技术-组播路由协议PIM
  • 原文地址:https://blog.csdn.net/xiamaocheng/article/details/134040305