Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-cloud-core
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-cloud-core
Commits
99a0fe79
Commit
99a0fe79
authored
Sep 07, 2025
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
认证中心权限校验过滤器优化
parent
6158ca1b
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
2 deletions
+42
-2
yd-auth-core/src/main/java/com/yd/auth/core/config/LoginConfig.java
+17
-0
yd-auth-core/src/main/java/com/yd/auth/core/security/JwtAuthenticationFilter.java
+11
-2
yd-auth-core/src/main/java/com/yd/auth/core/service/impl/AuthServiceImpl.java
+14
-0
No files found.
yd-auth-core/src/main/java/com/yd/auth/core/config/LoginConfig.java
0 → 100644
View file @
99a0fe79
package
com
.
yd
.
auth
.
core
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
/**
* 登录配置类
*/
@Data
@Component
@ConfigurationProperties
(
prefix
=
"login"
)
public
class
LoginConfig
{
//登录信息存入缓存的时间2天
private
Integer
redisTimeout
;
}
yd-auth-core/src/main/java/com/yd/auth/core/security/JwtAuthenticationFilter.java
View file @
99a0fe79
package
com
.
yd
.
auth
.
core
.
security
;
package
com
.
yd
.
auth
.
core
.
security
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.common.constant.RedisConstants
;
import
com.yd.common.result.Result
;
import
com.yd.common.result.Result
;
import
com.yd.common.utils.RedisUtil
;
import
com.yd.user.feign.client.sysuser.ApiSysUserFeignClient
;
import
com.yd.user.feign.client.sysuser.ApiSysUserFeignClient
;
import
com.yd.user.feign.request.sysuser.ApiSysUserDetailBodyRequest
;
import
com.yd.user.feign.request.sysuser.ApiSysUserDetailBodyRequest
;
import
com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse
;
import
com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse
;
...
@@ -32,6 +34,9 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
...
@@ -32,6 +34,9 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
// private ISysUserService iSysUserService;
// private ISysUserService iSysUserService;
@Autowired
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
ApiSysUserFeignClient
apiSysUserFeignClient
;
private
ApiSysUserFeignClient
apiSysUserFeignClient
;
private
final
JwtTokenProvider
tokenProvider
;
private
final
JwtTokenProvider
tokenProvider
;
...
@@ -53,8 +58,12 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
...
@@ -53,8 +58,12 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
// 3. 从JWT令牌中提取用户唯一标识(业务ID)
// 3. 从JWT令牌中提取用户唯一标识(业务ID)
String
userBizId
=
tokenProvider
.
getUserBizIdFromToken
(
token
);
String
userBizId
=
tokenProvider
.
getUserBizIdFromToken
(
token
);
// 4. 根据用户唯一标识查询用户详细信息(包括权限信息)
// 4. 根据用户唯一标识查询用户详细信息(包括权限信息)从缓存里面获取
UserDetails
userDetails
=
queryUserDetails
(
userBizId
);
UserDetails
userDetails
=
redisUtil
.
getCacheObject
(
RedisConstants
.
LOGIN_USER
+
userBizId
);
if
(
Objects
.
isNull
(
userDetails
))
{
throw
new
UsernameNotFoundException
(
"用户不存在"
);
}
// UserDetails userDetails = queryUserDetails(userBizId);
// 5. 创建Spring Security认证对象
// 5. 创建Spring Security认证对象
// - userDetails: 包含用户身份和权限信息
// - userDetails: 包含用户身份和权限信息
...
...
yd-auth-core/src/main/java/com/yd/auth/core/service/impl/AuthServiceImpl.java
View file @
99a0fe79
package
com
.
yd
.
auth
.
core
.
service
.
impl
;
package
com
.
yd
.
auth
.
core
.
service
.
impl
;
import
com.yd.auth.core.config.LoginConfig
;
import
com.yd.auth.core.dto.AuthUserDto
;
import
com.yd.auth.core.request.LoginRequest
;
import
com.yd.auth.core.request.LoginRequest
;
import
com.yd.auth.core.response.LoginResponse
;
import
com.yd.auth.core.response.LoginResponse
;
import
com.yd.auth.core.security.JwtTokenProvider
;
import
com.yd.auth.core.security.JwtTokenProvider
;
import
com.yd.auth.core.service.AuthService
;
import
com.yd.auth.core.service.AuthService
;
import
com.yd.common.constant.RedisConstants
;
import
com.yd.common.utils.RedisUtil
;
import
com.yd.common.utils.SM3Util
;
import
com.yd.common.utils.SM3Util
;
import
com.yd.user.service.model.SysUser
;
import
com.yd.user.service.model.SysUser
;
import
com.yd.user.service.service.ISysUserService
;
import
com.yd.user.service.service.ISysUserService
;
...
@@ -17,6 +21,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
...
@@ -17,6 +21,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
@Service
@Service
public
class
AuthServiceImpl
implements
AuthService
{
public
class
AuthServiceImpl
implements
AuthService
{
...
@@ -25,6 +30,12 @@ public class AuthServiceImpl implements AuthService {
...
@@ -25,6 +30,12 @@ public class AuthServiceImpl implements AuthService {
@Qualifier
(
"sysUserServiceImpl"
)
@Qualifier
(
"sysUserServiceImpl"
)
private
ISysUserService
iSysUserService
;
private
ISysUserService
iSysUserService
;
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
LoginConfig
loginConfig
;
private
final
AuthenticationManager
authenticationManager
;
private
final
AuthenticationManager
authenticationManager
;
private
final
JwtTokenProvider
jwtTokenProvider
;
private
final
JwtTokenProvider
jwtTokenProvider
;
...
@@ -85,6 +96,9 @@ public class AuthServiceImpl implements AuthService {
...
@@ -85,6 +96,9 @@ public class AuthServiceImpl implements AuthService {
response
.
setToken
(
token
);
// 设置生成的JWT令牌
response
.
setToken
(
token
);
// 设置生成的JWT令牌
response
.
setExpiresIn
(
jwtTokenProvider
.
getJwtExpiration
());
// 设置令牌过期时间
response
.
setExpiresIn
(
jwtTokenProvider
.
getJwtExpiration
());
// 设置令牌过期时间
//获取用户登录信息存入redis缓存中,2天
AuthUserDto
currentUser
=
(
AuthUserDto
)
authenticated
.
getPrincipal
();
redisUtil
.
setCacheObject
(
RedisConstants
.
LOGIN_USER
+
sysUser
.
getUserBizId
(),
currentUser
,
loginConfig
.
getRedisTimeout
(),
TimeUnit
.
DAYS
);
return
response
;
return
response
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment