SpringBoot项目实现Token功能(1)

闫云*

Token

项目描述

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。 Token的目的是为了减轻服务器的压力,减少频繁的查询数据库。

上传时间

2021.03.30

浏览人数

968人
闫云*
天津市西青区
Hot:8307

1.pom文件里添加JWT的依赖

<!--在此处加入jwt来实现token验证-->
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.4.0</version>
</dependency>

 

2.添加两个自定义的注解

SpringBoot项目实现Token功能(1)

public class TokenConfig {

    //定义跳过token验证的注解
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface PassToken{
        boolean required() default true;
    }

    //定义需要Token验证的注解
    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface UserLoginToken{
        boolean required() default true;
    }
}

 

3.创建pojo实体类以及两个查询函数

(1).创建两个pojo实体类

pom文件内添加lombok依赖,简化代码

<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
    <scope>provided</scope>
</dependency>

下载lombok插件

SpringBoot项目实现Token功能(1) 

JsonMsgPojo输出函数结果

@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonMsgPojo {
    private boolean status;
    private String msg;
    private Object data;
}

UserPojo人员信息实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserPojo {
    private Long id;
    private String un;
    private String pw;
    private String token;
}

 

(2).创建登录函数,这里三层架构内容不再赘述

@PostMapping("login")
public JsonMsgPojo login(UserPojo up){
    UserPojo userPojo = userService.login(up);
    if (userPojo==null){
        return new JsonMsgPojo(false,"用户名或密码错误!",null);
    }
    return new JsonMsgPojo(true,"登陆成功!",userPojo);
}

 

(3).创建根据id查询用户的函数,同样三层架构内容不再赘述

@GetMapping("findUserById")
public JsonMsgPojo findUserById(UserPojo up){
    UserPojo userPojo = userService.findUserById(up);
    if (userPojo == null){
        return new JsonMsgPojo(false,"用户不存在!",null);
    }
    return new JsonMsgPojo(true,"查询成功!",null);
}

 

4.创建工具函数来生成token密文(封装函数)

SpringBoot项目实现Token功能(1)

public class TokenTools {
    //生成token密文的函数
    public static String getToken(UserPojo user) {
        Date start = new Date();//开始生效时间
        long currentTime = System.currentTimeMillis() +  60*60 * 1000;//一小时有效时间(根据项目要求)
        Date end = new Date(currentTime); //失效时间
        //在这里使用了用户的id和密码以生成一个token
        String token = JWT.create().withAudience(user.getId().toString()).withIssuedAt(start).withExpiresAt(end)
                .sign(Algorithm.HMAC256(user.getPw()));
        return token;
    }
}

 


闫云*

4.8分

完整度很高, 但是排版上如果能再精细一些会更好!
Django 天津Java培训 天津Java培训班 天津Java培训哪家好?天津Java培训机构 java python ajax 天津Java培训 天津Java培训班 天津Java培训班管用吗 天津Java培训班哪家好 Java 天津Java培训 Java培训 天津编程培训 Java Java培训班 Eclipse Tomcat Git 天津Java培训 Java培训 天津编程培训 Java Java培训班 Eclipse MyEclipse IntelliJ IDEA 天津Java培训 Java培训班 Java开发 Java 天津Java开发培训 Eclipse MyEclipse 天津Java培训 天津Java开发培训 天津Java培训班 Eclipse MyEclipse 天津Java培训 天津Java开发培训 天津Java培训班 Java开发培训 C/C++ Java Python 天津Java培训 天津Java开发培训 天津Java培训班 Java开发培训 C/C++ Java Python 天津Java培训 天津Java开发培训 天津Java培训班 Java开发培训 C/C++ Java Python 天津Java培训 天津Java开发培训 天津Java培训班 Java开发培训 C/C++ Java Python 天津Java培训 天津Java开发培训 天津Java培训班 Java开发培训 C/C++ Java Python 天津Java培训 天津Java开发培训 天津Java培训班 Java开发培训 Java python web前端 天津Java培训 天津Java 培训班 天津Java培训机构 天津Java开发培训 Editplus ltraEdit Eclipse 天津Java培训 天津Java培训班 Java开发培训 Java培训机构 ps ai 天津Java培训 天津Java培训班 天津Java培训机构 Java培训 Java开发培训 java python web 天津Java培训 天津Java培训机构 天津Java培训班 天津Java培训学校 java python web 天津Java培训 天津Java培训机构 天津Java培训学校 天津Java培训哪家好 Java python web 天津Java培训 天津Java培训学校 Java python web 天津Java培训 天津Java 开发培训 天津Java开发培训机构 java python web 天津Java培训 天津Java培训机构 Java培训班 天津Java培训学校 Java python web 天津Java培训 天津Java培训班 天津Java培训机构 Java培训 Java python web 天津Java培训 天津Java培训机构 天津Java培训班 Java培训 java web python 天津Java培训 天津Java培训班 天津Java培训学校 Java培训机构 Java培训 java python web 天津Java培训 天津Java培训机构 Java培训 天津Java培训学校 java python web 天津Java培训 天津Java培训班 天津Java培训机构 Java培训学校 java python web 天津Java培训 天津Java培训班 天津Java培训学校 Java培训 java python web 天津Java培训 天津Java配训学校 Java培训 java web python 天津Java培训 天津Java培训班 Java培训机构 Java培训 Java python web 天津Java培训 天津Java培训班 天津Java培训机构 Java培训 java python web 天津Java培训 天津Java培训班 天津Java培训机构 java python web 天津Java培训 天津Java培训班 天津Java培训机构 Java web python 天津Java培训 天津Java培训学校 Java培训 java web python 天津Java培训 天津Java培训机构 Java培训 java web python 天津Java培训 天津Java培训机构 Java培训 java web python 天津Java培训 天津Java培训机构 Java培训 java web python 天津Java培训 天津Java培训班 Java培训 java web python 天津Java培训 天津Java培训班 Java培训机构 java python web 天津Java培训 天津Java培训哪家好
闫云*    8307 天津市西青区 设计师杨冰是女孩 1992.**.**
本网站已在中国版权保护中心登记了美术作品著作权与软件著作权违者将依法追究责任,特此声明! | Copyright©2013-2022,zhuzuoji.com | 诚筑说培训学校(天津)有限公司内容支持 | 京ICP备17020986号-5