Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来开源组织
youlai-mall
提交
774a7fa7
Y
youlai-mall
项目概览
有来开源组织
/
youlai-mall
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-mall
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
774a7fa7
编写于
2月 21, 2022
作者:
郝
郝先瑞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: 认证方式调整为认证身份标识重命名
上级
1ba35954
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
40 addition
and
27 deletion
+40
-27
youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysPermissionServiceImpl.java
...m/youlai/admin/service/impl/SysPermissionServiceImpl.java
+2
-1
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/member/MemberUserDetails.java
...h/security/core/userdetails/member/MemberUserDetails.java
+4
-3
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/member/MemberUserDetailsServiceImpl.java
...core/userdetails/member/MemberUserDetailsServiceImpl.java
+4
-3
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/user/SysUserDetails.java
...i/auth/security/core/userdetails/user/SysUserDetails.java
+12
-2
youlai-auth/src/main/java/com/youlai/auth/security/extension/refresh/PreAuthenticatedUserDetailsService.java
...extension/refresh/PreAuthenticatedUserDetailsService.java
+6
-6
youlai-common/common-core/src/main/java/com/youlai/common/constant/SecurityConstants.java
...in/java/com/youlai/common/constant/SecurityConstants.java
+5
-5
youlai-common/common-web/src/main/java/com/youlai/common/web/util/RequestUtils.java
...rc/main/java/com/youlai/common/web/util/RequestUtils.java
+7
-7
未找到文件。
youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysPermissionServiceImpl.java
浏览文件 @
774a7fa7
package
com.youlai.admin.service.impl
;
package
com.youlai.admin.service.impl
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
...
@@ -98,7 +99,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S
...
@@ -98,7 +99,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S
.
filter
(
item
->
StrUtil
.
isNotBlank
(
item
.
getBtnPerm
()))
.
filter
(
item
->
StrUtil
.
isNotBlank
(
item
.
getBtnPerm
()))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
btnPermList
))
{
if
(
CollectionUtil
.
isNotEmpty
(
btnPermList
))
{
Map
<
String
,
List
<
String
>>
btnPermRoles
=
Collection
Util
.
newHashMap
();
Map
<
String
,
List
<
String
>>
btnPermRoles
=
Map
Util
.
newHashMap
();
btnPermList
.
stream
().
forEach
(
item
->
{
btnPermList
.
stream
().
forEach
(
item
->
{
String
perm
=
item
.
getBtnPerm
();
String
perm
=
item
.
getBtnPerm
();
List
<
String
>
roles
=
item
.
getRoles
();
List
<
String
>
roles
=
item
.
getRoles
();
...
...
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/member/MemberUserDetails.java
浏览文件 @
774a7fa7
...
@@ -24,10 +24,11 @@ public class MemberUserDetails implements UserDetails {
...
@@ -24,10 +24,11 @@ public class MemberUserDetails implements UserDetails {
private
Boolean
enabled
;
private
Boolean
enabled
;
/**
/**
* 认证方式
* 扩展字段:认证身份标识,枚举值如下:
*
* @see com.youlai.common.enums.AuthenticationIdentityEnum
*/
*/
private
String
authenticationMethod
;
private
String
authenticationIdentity
;
/**
/**
* 小程序会员用户体系
* 小程序会员用户体系
...
...
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/member/MemberUserDetailsServiceImpl.java
浏览文件 @
774a7fa7
package
com.youlai.auth.security.core.userdetails.member
;
package
com.youlai.auth.security.core.userdetails.member
;
import
com.youlai.common.enums.Authentication
Method
Enum
;
import
com.youlai.common.enums.Authentication
Identity
Enum
;
import
com.youlai.common.result.Result
;
import
com.youlai.common.result.Result
;
import
com.youlai.common.result.ResultCode
;
import
com.youlai.common.result.ResultCode
;
import
com.youlai.mall.ums.api.MemberFeignClient
;
import
com.youlai.mall.ums.api.MemberFeignClient
;
...
@@ -44,7 +44,7 @@ public class MemberUserDetailsServiceImpl implements UserDetailsService {
...
@@ -44,7 +44,7 @@ public class MemberUserDetailsServiceImpl implements UserDetailsService {
MemberAuthInfoDTO
member
=
result
.
getData
();
MemberAuthInfoDTO
member
=
result
.
getData
();
if
(
null
!=
member
)
{
if
(
null
!=
member
)
{
userDetails
=
new
MemberUserDetails
(
member
);
userDetails
=
new
MemberUserDetails
(
member
);
userDetails
.
setAuthentication
Method
(
AuthenticationMethodEnum
.
MOBILE
.
getValue
());
// 认证方式:OpenId
userDetails
.
setAuthentication
Identity
(
AuthenticationIdentityEnum
.
MOBILE
.
getValue
());
// 认证身份标识:mobile
}
}
}
}
if
(
userDetails
==
null
)
{
if
(
userDetails
==
null
)
{
...
@@ -68,11 +68,12 @@ public class MemberUserDetailsServiceImpl implements UserDetailsService {
...
@@ -68,11 +68,12 @@ public class MemberUserDetailsServiceImpl implements UserDetailsService {
public
UserDetails
loadUserByOpenId
(
String
openId
)
{
public
UserDetails
loadUserByOpenId
(
String
openId
)
{
MemberUserDetails
userDetails
=
null
;
MemberUserDetails
userDetails
=
null
;
Result
<
MemberAuthInfoDTO
>
result
=
memberFeignClient
.
loadUserByOpenId
(
openId
);
Result
<
MemberAuthInfoDTO
>
result
=
memberFeignClient
.
loadUserByOpenId
(
openId
);
if
(
Result
.
isSuccess
(
result
))
{
if
(
Result
.
isSuccess
(
result
))
{
MemberAuthInfoDTO
member
=
result
.
getData
();
MemberAuthInfoDTO
member
=
result
.
getData
();
if
(
null
!=
member
)
{
if
(
null
!=
member
)
{
userDetails
=
new
MemberUserDetails
(
member
);
userDetails
=
new
MemberUserDetails
(
member
);
userDetails
.
setAuthentication
Method
(
AuthenticationMethodEnum
.
OPENID
.
getValue
());
// 认证方式:O
penId
userDetails
.
setAuthentication
Identity
(
AuthenticationIdentityEnum
.
OPENID
.
getValue
());
// 认证方式:o
penId
}
}
}
}
if
(
userDetails
==
null
)
{
if
(
userDetails
==
null
)
{
...
...
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/user/SysUserDetails.java
浏览文件 @
774a7fa7
...
@@ -23,10 +23,20 @@ import java.util.Collection;
...
@@ -23,10 +23,20 @@ import java.util.Collection;
public
class
SysUserDetails
implements
UserDetails
{
public
class
SysUserDetails
implements
UserDetails
{
/**
/**
* 扩展字段
* 扩展字段
:用户ID
*/
*/
private
Long
userId
;
private
Long
userId
;
private
String
authenticationMethod
;
/**
* 扩展字段:认证身份标识,枚举值如下:
*
* @see com.youlai.common.enums.AuthenticationIdentityEnum
*/
private
String
authenticationIdentity
;
/**
* 扩展字段:部门ID
*/
private
Long
deptId
;
private
Long
deptId
;
/**
/**
...
...
youlai-auth/src/main/java/com/youlai/auth/security/extension/refresh/PreAuthenticatedUserDetailsService.java
浏览文件 @
774a7fa7
...
@@ -2,7 +2,7 @@ package com.youlai.auth.security.extension.refresh;
...
@@ -2,7 +2,7 @@ package com.youlai.auth.security.extension.refresh;
import
com.youlai.auth.security.core.userdetails.member.MemberUserDetailsServiceImpl
;
import
com.youlai.auth.security.core.userdetails.member.MemberUserDetailsServiceImpl
;
import
com.youlai.common.constant.SecurityConstants
;
import
com.youlai.common.constant.SecurityConstants
;
import
com.youlai.common.enums.Authentication
Method
Enum
;
import
com.youlai.common.enums.Authentication
Identity
Enum
;
import
com.youlai.common.web.util.RequestUtils
;
import
com.youlai.common.web.util.RequestUtils
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.InitializingBean
;
...
@@ -52,13 +52,13 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
...
@@ -52,13 +52,13 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
@Override
@Override
public
UserDetails
loadUserDetails
(
T
authentication
)
throws
UsernameNotFoundException
{
public
UserDetails
loadUserDetails
(
T
authentication
)
throws
UsernameNotFoundException
{
String
clientId
=
RequestUtils
.
getOAuth2ClientId
();
String
clientId
=
RequestUtils
.
getOAuth2ClientId
();
// 获取认证
方式,默认是用户名
username
// 获取认证
身份标识,默认是用户名:
username
Authentication
MethodEnum
authenticationMethodEnum
=
AuthenticationMethodEnum
.
getByValue
(
RequestUtils
.
getAuthenticationMethod
());
Authentication
IdentityEnum
authenticationIdentityEnum
=
AuthenticationIdentityEnum
.
getByValue
(
RequestUtils
.
getAuthenticationIdentity
());
UserDetailsService
userDetailsService
=
userDetailsServiceMap
.
get
(
clientId
);
UserDetailsService
userDetailsService
=
userDetailsServiceMap
.
get
(
clientId
);
if
(
clientId
.
equals
(
SecurityConstants
.
APP_CLIENT_ID
))
{
if
(
clientId
.
equals
(
SecurityConstants
.
APP_CLIENT_ID
))
{
// 移动端的用户体系是会员,认证方式是通过手机号 mobile 认证
// 移动端的用户体系是会员,认证方式是通过手机号 mobile 认证
MemberUserDetailsServiceImpl
memberUserDetailsService
=
(
MemberUserDetailsServiceImpl
)
userDetailsService
;
MemberUserDetailsServiceImpl
memberUserDetailsService
=
(
MemberUserDetailsServiceImpl
)
userDetailsService
;
switch
(
authentication
Method
Enum
)
{
switch
(
authentication
Identity
Enum
)
{
case
MOBILE:
case
MOBILE:
return
memberUserDetailsService
.
loadUserByMobile
(
authentication
.
getName
());
return
memberUserDetailsService
.
loadUserByMobile
(
authentication
.
getName
());
default
:
default
:
...
@@ -67,7 +67,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
...
@@ -67,7 +67,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
}
else
if
(
clientId
.
equals
(
SecurityConstants
.
WEAPP_CLIENT_ID
))
{
}
else
if
(
clientId
.
equals
(
SecurityConstants
.
WEAPP_CLIENT_ID
))
{
// 小程序的用户体系是会员,认证方式是通过微信三方标识 openid 认证
// 小程序的用户体系是会员,认证方式是通过微信三方标识 openid 认证
MemberUserDetailsServiceImpl
memberUserDetailsService
=
(
MemberUserDetailsServiceImpl
)
userDetailsService
;
MemberUserDetailsServiceImpl
memberUserDetailsService
=
(
MemberUserDetailsServiceImpl
)
userDetailsService
;
switch
(
authentication
Method
Enum
)
{
switch
(
authentication
Identity
Enum
)
{
case
OPENID:
case
OPENID:
return
memberUserDetailsService
.
loadUserByOpenId
(
authentication
.
getName
());
return
memberUserDetailsService
.
loadUserByOpenId
(
authentication
.
getName
());
default
:
default
:
...
@@ -75,7 +75,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
...
@@ -75,7 +75,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
}
}
}
else
if
(
clientId
.
equals
(
SecurityConstants
.
ADMIN_CLIENT_ID
))
{
}
else
if
(
clientId
.
equals
(
SecurityConstants
.
ADMIN_CLIENT_ID
))
{
// 管理系统的用户体系是系统用户,认证方式通过用户名 username 认证
// 管理系统的用户体系是系统用户,认证方式通过用户名 username 认证
switch
(
authentication
Method
Enum
)
{
switch
(
authentication
Identity
Enum
)
{
default
:
default
:
return
userDetailsService
.
loadUserByUsername
(
authentication
.
getName
());
return
userDetailsService
.
loadUserByUsername
(
authentication
.
getName
());
}
}
...
...
youlai-common/common-core/src/main/java/com/youlai/common/constant/SecurityConstants.java
浏览文件 @
774a7fa7
...
@@ -58,6 +58,11 @@ public interface SecurityConstants {
...
@@ -58,6 +58,11 @@ public interface SecurityConstants {
String
REFRESH_TOKEN_KEY
=
"refresh_token"
;
String
REFRESH_TOKEN_KEY
=
"refresh_token"
;
/**
* 认证身份标识
*/
String
AUTHENTICATION_IDENTITY_KEY
=
"authenticationIdentity"
;
String
APP_API_PATTERN
=
"/*/app-api/**"
;
String
APP_API_PATTERN
=
"/*/app-api/**"
;
String
LOGOUT_PATH
=
"/youlai-auth/oauth/logout"
;
String
LOGOUT_PATH
=
"/youlai-auth/oauth/logout"
;
...
@@ -67,11 +72,6 @@ public interface SecurityConstants {
...
@@ -67,11 +72,6 @@ public interface SecurityConstants {
*/
*/
String
SAVE_MENU_PATH
=
"/youlai-admin/api/v1/menus"
;
String
SAVE_MENU_PATH
=
"/youlai-admin/api/v1/menus"
;
/**
* 认证方式
*/
String
AUTHENTICATION_METHOD
=
"authenticationMethod"
;
/**
/**
* 验证码key前缀
* 验证码key前缀
*/
*/
...
...
youlai-common/common-web/src/main/java/com/youlai/common/web/util/RequestUtils.java
浏览文件 @
774a7fa7
...
@@ -5,7 +5,7 @@ import cn.hutool.json.JSONObject;
...
@@ -5,7 +5,7 @@ import cn.hutool.json.JSONObject;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.nimbusds.jose.JWSObject
;
import
com.nimbusds.jose.JWSObject
;
import
com.youlai.common.constant.SecurityConstants
;
import
com.youlai.common.constant.SecurityConstants
;
import
com.youlai.common.enums.Authentication
Method
Enum
;
import
com.youlai.common.enums.Authentication
Identity
Enum
;
import
lombok.SneakyThrows
;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.logging.log4j.util.Strings
;
import
org.apache.logging.log4j.util.Strings
;
...
@@ -62,22 +62,22 @@ public class RequestUtils {
...
@@ -62,22 +62,22 @@ public class RequestUtils {
}
}
/**
/**
* 解析JWT获取获取认证
方式
* 解析JWT获取获取认证
身份标识
*
*
* @return
* @return
*/
*/
@SneakyThrows
@SneakyThrows
public
static
String
getAuthentication
Method
()
{
public
static
String
getAuthentication
Identity
()
{
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
HttpServletRequest
request
=
((
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
()).
getRequest
();
String
refreshToken
=
request
.
getParameter
(
SecurityConstants
.
REFRESH_TOKEN_KEY
);
String
refreshToken
=
request
.
getParameter
(
SecurityConstants
.
REFRESH_TOKEN_KEY
);
String
payload
=
StrUtil
.
toString
(
JWSObject
.
parse
(
refreshToken
).
getPayload
());
String
payload
=
StrUtil
.
toString
(
JWSObject
.
parse
(
refreshToken
).
getPayload
());
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
payload
);
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
payload
);
String
authentication
Method
=
jsonObject
.
getStr
(
SecurityConstants
.
AUTHENTICATION_METHOD
);
String
authentication
Identity
=
jsonObject
.
getStr
(
SecurityConstants
.
AUTHENTICATION_IDENTITY_KEY
);
if
(
StrUtil
.
isBlank
(
authentication
Method
))
{
if
(
StrUtil
.
isBlank
(
authentication
Identity
))
{
authentication
Method
=
AuthenticationMethod
Enum
.
USERNAME
.
getValue
();
authentication
Identity
=
AuthenticationIdentity
Enum
.
USERNAME
.
getValue
();
}
}
return
authentication
Method
;
return
authentication
Identity
;
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录