一、综述:
本节对spring-security-oauth2进行springboot starter组件封,同时集成spring-security-oauth2,justauth-spring-boot-starter,,对spring-security进行简单扩充,自定义处理各种handle ,但不涉及具体的认证,具体认证后续会有一个认证服务专门去处理认证跟三方登录问题。文中涉及到以前章节的内容将不做重复描述。
二:详细过程:
1>模块和pom创建
在immortal-maqiao-core模块下增加immortal-maqiao-core-starter-security模块,项目结构如下图:
POM文件内容如下:(其中增加的三方包需要在immortal-maqiao-depencies中增加版本依赖)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>immortal-maqiao-core</artifactId>
<groupId>immortal-maqiao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.0-SNAPSHOT</version>
<artifactId>immortal-maqiao-core-starter-security</artifactId>
<dependencies>
<dependency>
<groupId>immortal.maqiao</groupId>
<artifactId>immortal-maqiao-core-common</artifactId>
</dependency>
<dependency>
<groupId>immortal-maqiao</groupId>
<artifactId>immortal-maqiao-core-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>com.xkcoding.justauth</groupId>
<artifactId>justauth-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
2>扩展spring-.security中的User类,补充真实系统中需要用到的属性。
@Getter
public class ImmortalMaqiaoUser extends User {
private static final long serialVersionUID = 3878934350737176800L;
/**
* 用户ID
*/
private Long id;
/**
* 部门ID
*/
private String roleId;
/**
* 部门ID
*/
private Long departId;
/**
* 手机号
*/
private String phone;
/**
* 头像
*/
private String avatar;
/**
* 登录类型
*/
private int type;
public ImmortalMaqiaoUser(Long id, int type, Long departId, String roleId, String phone, String avatar, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
this.id = id;
this.type = type;
this.roleId = roleId;
this.departId = departId;
this.phone = phone;