Skip to content

Commit 121e720

Browse files
authored
Merge pull request #2 from indyoung/v0.0.9
V0.0.9
2 parents 8101938 + 7bfc08b commit 121e720

23 files changed

Lines changed: 241 additions & 75 deletions

File tree

admin4j-dependencies/pom.xml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.admin4j</groupId>
88
<artifactId>admin4j-dependencies</artifactId>
9-
<version>0.9.0-SNAPSHOT</version>
9+
<version>0.9.1</version>
1010
<packaging>pom</packaging>
1111

1212
<name>${project.artifactId}</name>
@@ -17,7 +17,7 @@
1717
<maven.compiler.target>8</maven.compiler.target>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1919
<!-- 统一依赖管理 -->
20-
<spring.boot.version>2.7.14</spring.boot.version>
20+
<spring.boot.version>2.7.17</spring.boot.version>
2121
<spring.cloud.ali.version>2021.0.5.0</spring.cloud.ali.version>
2222
<spring-cloud.version>2021.0.8</spring-cloud.version>
2323

@@ -64,7 +64,7 @@
6464

6565
<flowable.version>6.7.2</flowable.version>
6666
<admin4j-plugin.version>0.1.2</admin4j-plugin.version>
67-
<admin4j.version>0.9.0-SNAPSHOT</admin4j.version>
67+
<admin4j.version>0.9.0</admin4j.version>
6868
<admin4j-lock.version>0.8.2</admin4j-lock.version>
6969
<admin4j-limiter.version>0.8.0</admin4j-limiter.version>
7070
<admin4j-redis.version>0.8.0</admin4j-redis.version>
@@ -107,10 +107,15 @@
107107
</dependency>
108108

109109
<!-- admin4j相关-->
110+
<dependency>
111+
<groupId>com.admin4j.dict</groupId>
112+
<artifactId>dict-spring-boot-starter</artifactId>
113+
<version>0.8.1</version>
114+
</dependency>
110115
<dependency>
111116
<groupId>com.admin4j.framework</groupId>
112117
<artifactId>enum-spring-boot-starter</artifactId>
113-
<version>0.8.0</version>
118+
<version>0.9.0</version>
114119
</dependency>
115120
<dependency>
116121
<groupId>com.admin4j.spring</groupId>
@@ -290,7 +295,7 @@
290295
<dependency>
291296
<groupId>com.admin4j.framework</groupId>
292297
<artifactId>oss-spring-boot-starter</artifactId>
293-
<version>0.8.8-SNAPSHOT</version>
298+
<version>0.9.0</version>
294299
</dependency>
295300
<dependency>
296301
<groupId>com.admin4j</groupId>
@@ -301,7 +306,7 @@
301306
<dependency>
302307
<groupId>com.admin4j.framework</groupId>
303308
<artifactId>xxl-job-spring-boot-starter</artifactId>
304-
<version>${admin4j.version}</version>
309+
<version>1.0.0</version>
305310
</dependency>
306311
<dependency>
307312
<groupId>io.github.admin4j</groupId>
@@ -370,7 +375,7 @@
370375
<dependency>
371376
<groupId>com.github.pagehelper</groupId>
372377
<artifactId>pagehelper-spring-boot-starter</artifactId>
373-
<version>1.4.6</version>
378+
<version>2.0.0</version>
374379
</dependency>
375380

376381
<dependency>

admin4j-lock/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66
<parent>
77
<groupId>com.admin4j</groupId>
88
<artifactId>framework</artifactId>
9-
<version>0.8.0</version>
9+
<version>0.9.0</version>
1010
</parent>
1111

1212
<artifactId>admin4j-lock</artifactId>

admin4j-parent/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66

77
<groupId>com.admin4j</groupId>
88
<artifactId>admin4j-parent</artifactId>
9-
<version>0.9.0-SNAPSHOT</version>
9+
<version>0.9.0</version>
1010
<description>用于业务框架的父工程</description>
1111
<packaging>pom</packaging>
1212
<name>admin4j-parent</name>
1313
<url>https://github.com/admin4j/admin4j-framework</url>
1414
<properties>
15-
<admin4j-dependencies.version>0.9.0-SNAPSHOT</admin4j-dependencies.version>
15+
<admin4j-dependencies.version>0.9.0</admin4j-dependencies.version>
1616
<maven.compiler.source>8</maven.compiler.source>
1717
<maven.compiler.target>8</maven.compiler.target>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

enum-spring-boot-starter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.admin4j</groupId>
66
<artifactId>framework</artifactId>
7-
<version>0.8.0</version>
7+
<version>0.9.0</version>
88
</parent>
99

1010
<groupId>com.admin4j.framework</groupId>

oss-spring-boot-starter/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<parent>
55
<groupId>com.admin4j</groupId>
66
<artifactId>framework</artifactId>
7-
<version>0.8.0</version>
7+
<version>0.9.0</version>
88
</parent>
99

1010
<groupId>com.admin4j.framework</groupId>
1111
<artifactId>oss-spring-boot-starter</artifactId>
12-
<version>0.8.8-SNAPSHOT</version>
12+
<version>0.9.0</version>
1313
<packaging>jar</packaging>
1414
<description>封装基于Amazon S3的OSS对象存储服务。在SpringBoot 中通过封装,简单地方式将文件存储到
1515
MinIO、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS等支持

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
44
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66

@@ -43,8 +43,8 @@
4343
<module>enum-spring-boot-starter</module>
4444
</modules>
4545
<properties>
46-
<revision>0.9.0-SNAPSHOT</revision>
47-
<admin4j-dependencies.version>0.9.0-SNAPSHOT</admin4j-dependencies.version>
46+
<revision>0.9.0</revision>
47+
<admin4j-dependencies.version>0.9.0</admin4j-dependencies.version>
4848
<maven.compiler.source>8</maven.compiler.source>
4949
<maven.compiler.target>8</maven.compiler.target>
5050
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
# admin security
2+
3+
## USAGES
4+
5+
1. 引入 pom
6+
7+
```
8+
<dependency>
9+
<groupId>com.admin4j.framework</groupId>
10+
<artifactId>security-spring-boot-starter</artifactId>
11+
<version>0.9.0</version>
12+
</dependency>
13+
```
14+
15+
2. 实现 JwtUserDetailsService 接口,用于根据用户ID获取用户详情。由于我们的JWT Token 存的是 userId,所以这里的入参为userId
16+
17+
```java
18+
19+
@Component
20+
public class Admin4jJwtUserDetailsService implements JwtUserDetailsService {
21+
22+
@Autowired
23+
ISysUserLongInfoService sysUserLongInfoService;
24+
25+
@Override
26+
public JwtUserDetails loadUserByUserId(Long userId) {
27+
28+
return sysUserLongInfoService.getByUserId(userId);
29+
}
30+
}
31+
```
32+
33+
3. 账号密码登录。需要实现 `Spring Security``UserDetailsService` 接口,用于根据 username 查询用户详情
34+
35+
```java
36+
37+
@Component
38+
public class Admin4jJwtUserDetailsService implements JwtUserDetailsService, UserDetailsService {
39+
40+
@Autowired
41+
ISysUserLongInfoService sysUserLongInfoService;
42+
@Autowired
43+
ISysUserService sysUserService;
44+
45+
@Override
46+
public JwtUserDetails loadUserByUserId(Long userId) {
47+
48+
return sysUserLongInfoService.getByUserId(userId);
49+
}
50+
51+
@Override
52+
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
53+
SysUser sysUser = sysUserService.getByUserName(username);
54+
return SysUserConvert.INSTANCE.convert(sysUser);
55+
}
56+
}
57+
58+
```
59+
60+
### 测试
61+
62+
- 登录接口
63+
64+
```curl
65+
curl --location 'http://localhost:8080/login' \
66+
--header 'Content-Type: application/x-www-form-urlencoded' \
67+
--data-urlencode 'username=admin' \
68+
--data-urlencode 'password=123456'
69+
```
70+
71+
- 返回结果
72+
73+
```json
74+
{
75+
"code": 200,
76+
"data": {
77+
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzYWx0IjoiMTIiLCJleHAiOjE2OTkzNDU3ODAsInVzZXJJRCI6MX0.tz0RGKSQEwfS0aTrsF7bdxF1enU4Vy32rn4ckDn3-D0"
78+
},
79+
"msg": "success"
80+
}
81+
```
82+
83+
## 多渠道登录
84+
85+
通过配置的方式,支持微信,手机号等多渠道登录
86+
87+
### 验证码手机号登录
88+
89+
- yaml配置方式
90+
91+
```yaml
92+
admin4j:
93+
security:
94+
ignoring:
95+
uris: "login/sendPhoneCode"
96+
multi:
97+
auth-map:
98+
phone: phoneNumber
99+
100+
```
101+
102+
auth-map 为渠道登录登录方式配置。对象类型,key为 登录方式 (`authType`)。value 为登录认证的字段名称。
103+
解释如上配置,
104+
105+
- 登录方式 (`authType`) : `phone`
106+
- 登录认证的字段名称: `phoneNumber`
107+
- ignoring.uris 忽略认证的接口。需要将发送验证码接口,忽略认证。
108+
109+
前端登录接口案例:`/login/phone` (/login/authType)
110+
111+
```curl
112+
curl --location 'http://localhost:8080/login/phone' \
113+
--header 'Content-Type: application/x-www-form-urlencoded' \
114+
--data-urlencode 'phoneNumber=admin' \
115+
--data-urlencode 'verificationCode=123456'
116+
```
117+
118+
- java 配置代码,实现接口`MultiUserDetailsService`
119+
1. 配置登录方式 `support()` 为 phone (yaml配置的`authType`
120+
2. 检查手机对应的验证码是否正确
121+
3. 根据手机号获取用户详情
122+
123+
```java
124+
125+
/**
126+
* 验证码手机号登录
127+
*
128+
*/
129+
@Component
130+
public class PhoneMultiUserDetailsService implements MultiUserDetailsService {
131+
@Autowired
132+
ISysUserService sysUserService;
133+
134+
@Override
135+
public String support() {
136+
return "phone";
137+
}
138+
139+
@Override
140+
public boolean preVerify(MultiAuthenticationToken multiAuthenticationToken) {
141+
142+
// 验证码
143+
String verificationCode = multiAuthenticationToken.getAuthParameter("verificationCode");
144+
// TODO 验证验证码正确性。错误返回 false,或者抛出错误
145+
return true;
146+
}
147+
148+
@Override
149+
public UserDetails loadUserByMultiToken(String phoneNumber) {
150+
151+
SysUser sysUser = sysUserService.getByPhoneNumber(phoneNumber);
152+
return SysUserConvert.INSTANCE.convert(sysUser);
153+
}
154+
}
155+
156+
```
157+
158+
### 其他渠道登录,如微信openid 登录,参考上方可实现

security-spring-boot-starter/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44
<parent>
@@ -10,11 +10,16 @@
1010
<groupId>com.admin4j.framework</groupId>
1111
<artifactId>security-spring-boot-starter</artifactId>
1212
<packaging>jar</packaging>
13+
<!-- <version>0.9.1-SNAPSHOT</version>-->
1314

1415
<name>security-spring-boot-starter</name>
1516

1617

1718
<dependencies>
19+
<dependency>
20+
<groupId>com.admin4j.common</groupId>
21+
<artifactId>admin4j-common</artifactId>
22+
</dependency>
1823
<dependency>
1924
<groupId>io.swagger</groupId>
2025
<artifactId>swagger-annotations</artifactId>

security-spring-boot-starter/src/main/java/com/admin4j/framework/security/UserTokenService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.admin4j.framework.security;
22

33
import com.admin4j.framework.security.jwt.JwtUserDetails;
4-
import org.springframework.security.core.userdetails.UserDetails;
54

65
import javax.servlet.http.HttpServletRequest;
76

@@ -39,5 +38,5 @@ public interface UserTokenService {
3938
* @param token
4039
* @return 登录用户名
4140
*/
42-
UserDetails getUserDetails(String token);
41+
JwtUserDetails getUserDetails(String token);
4342
}

0 commit comments

Comments
 (0)