项目描述
上传时间
浏览人数
1.在pom文件里添加JWT的依赖
<!--在此处加入jwt来实现token验证-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
2.添加两个自定义的注解
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插件
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密文(封装函数)
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;
}
}