目录
在springboot项目中使用spring-security实现登陆验证,登陆成功则返回角色及权限信息,登陆失败则返回失败原因。
在实现此功能的时候,在网上找了大量教程,但是均没有符合我需求的,最后在参考一篇文档的基础上进行了代码实现。
结果展示
使用restClient发送post请求,post体中携带了username和password等信息。后台会根据此账号查询数据库判断此用户是否存在,如果存在则进一步进行账号密码的验证,验证通过再去查询此账号拥有的角色及权限信息。
具体实现代码如下:
1. 引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druild.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
在上面除了引入了spring-security的依赖之外,还有三种json解析的依赖,都有不同的作用,还有一些其他依赖是连接数据库所用。
2. 配置User类
package com.mas.leadsscoring.process.vo;
import com.mas.leadsscoring.process.entity.TtRole;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* @Description spring-security的user对象
* @Author LiuYue
* @Date 2019/3/6
* @Version 1.0
*/
@Data
public class UserVO implements UserDetails {
/**
* 用户ID
*/
private String userId;
/**
* 用户账号
*/
private String user;
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String password;
/**
* 是否为回收站,0表示不是,1表示是
*/
private String isRecycle;
/**
* 是否可用。Y表示可用,N表示不可用
*/
private String isEnable;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新人
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 备注
*/
private String comment;
/**
* 用户角色
**/
private List<TtRole> roles;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
List<GrantedA