实体类编写
在前面的文章中我们已经完成了项目目录和基本框架的搭建,现在我们开始编写实体类,首先我们在model包下创建一个pojo子包。
注意:关于PO、VO、POJO、DTO等概念网络上已经有很多资料了,在本项目中不再阐述其的详细含义,且为了方便起见只划分POJO与DTO,为此产生的一些有歧义或错误的划分方法或用法请读者们见谅。
创建好子包之后我们创建相应的pojo,一张表对应一个类,如果编写过Web项目的同学对这步应该是比较熟悉的,创建相应的类的过程笔者不一一讲解,具体可以参见笔者的GitHub主页,后续将会上传完整的直接导入的工程代码,创建完毕后请务必将@Data、@AllArgsConstructor、@NoArgsConstructor三个注解加上。
利用Token进行用户鉴权
实体类编写完之后我们开始进行用户权限认证功能的编写,在本项目中利用了jwt和拦截器(interceptor)进行实现。
首先在本项目仅分为三种角色:
- 实验室管理员(ADMIN)
- 实验室成员(VIP)
- 普通用户(MEMBER)
这种划分方式是不够严谨和安全的,目前的权限划分一般是分为用户角色和用户权限两个部分,每个用户对应某个角色,某个角色拥有某些权限,欢迎读者自行思考更完善的权限划分方案。
创建Jwt工具类
首先我们先前往util包中创建一个名为JwtUtil的类,类的内容如下:
JwtUtil
/**
* @Author Alfalfa99
* @Date 2020/9/13 15:54
* @Version 1.0
* JWT生成以及校验工具类
*/
@ConfigurationProperties("jwt.config")
@Component
public class JwtUtil {
private String key;
private long ttl;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public long getTtl() {
return ttl;
}
public void setTtl(long ttl) {
this.ttl = ttl;
}
/**
* 生成JWT
*
* @param id
* @return
*/
public String createJWT(String id, String roles) {
long nowMillis = System.currentTimeM