Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
e0ab6b84
提交
e0ab6b84
authored
8月 26, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加令牌刷新逻辑
增加演示模式的开关
上级
54325da2
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
77 行增加
和
17 行删除
+77
-17
AdminSecurityAutoConfiguration.java
...security/admin/config/AdminSecurityAutoConfiguration.java
+6
-4
AdminSecurityProperties.java
...r/mall/security/admin/config/AdminSecurityProperties.java
+18
-0
AdminDemoInterceptor.java
...security/admin/core/interceptor/AdminDemoInterceptor.java
+3
-2
PassportController.java
...managementweb/controller/passport/PassportController.java
+9
-5
PassportManager.java
.../mall/managementweb/manager/passport/PassportManager.java
+14
-6
application-dev.yml
management-web-app/src/main/resources/application-dev.yml
+3
-0
PassportController.http
.../mall/userweb/controller/passport/PassportController.http
+6
-0
PassportController.java
.../mall/userweb/controller/passport/PassportController.java
+9
-0
PassportManager.java
...ocoder/mall/userweb/manager/passport/PassportManager.java
+8
-0
application.yml
user-web-app/src/main/resources/application.yml
+1
-0
没有找到文件。
common/mall-spring-boot-starter-security-admin/src/main/java/cn/iocoder/mall/security/admin/config/AdminSecurityAutoConfiguration.java
浏览文件 @
e0ab6b84
...
...
@@ -49,10 +49,12 @@ public class AdminSecurityAutoConfiguration implements WebMvcConfigurer {
.
excludePathPatterns
(
properties
.
getDefaultIgnorePaths
());
logger
.
info
(
"[addInterceptors][加载 AdminSecurityInterceptor 拦截器完成]"
);
// AdminDemoInterceptor 拦截器
registry
.
addInterceptor
(
this
.
adminDemoInterceptor
())
.
excludePathPatterns
(
properties
.
getIgnorePaths
())
.
excludePathPatterns
(
properties
.
getDefaultIgnorePaths
());
logger
.
info
(
"[addInterceptors][加载 AdminDemoInterceptor 拦截器完成]"
);
if
(
Boolean
.
TRUE
.
equals
(
properties
.
getDemo
()))
{
registry
.
addInterceptor
(
this
.
adminDemoInterceptor
())
.
excludePathPatterns
(
properties
.
getIgnorePaths
())
.
excludePathPatterns
(
properties
.
getDefaultIgnorePaths
());
logger
.
info
(
"[addInterceptors][加载 AdminDemoInterceptor 拦截器完成]"
);
}
}
}
common/mall-spring-boot-starter-security-admin/src/main/java/cn/iocoder/mall/security/admin/config/AdminSecurityProperties.java
浏览文件 @
e0ab6b84
...
...
@@ -11,6 +11,11 @@ public class AdminSecurityProperties {
// Actuator 相关
};
/**
* 演示模式 - 默认值(关闭)
*/
private
static
final
Boolean
DEFAULT_DEMO
=
false
;
/**
* 自定义忽略 Path
*/
...
...
@@ -19,6 +24,10 @@ public class AdminSecurityProperties {
* 默认忽略 Path
*/
private
String
[]
defaultIgnorePaths
=
DEFAULT_IGNORE_PATHS
;
/**
* 是否开启演示模式
*/
private
Boolean
demo
=
DEFAULT_DEMO
;
public
String
[]
getIgnorePaths
()
{
return
ignorePaths
;
...
...
@@ -38,4 +47,13 @@ public class AdminSecurityProperties {
return
this
;
}
public
Boolean
getDemo
()
{
return
demo
;
}
public
AdminSecurityProperties
setDemo
(
Boolean
demo
)
{
this
.
demo
=
demo
;
return
this
;
}
}
common/mall-spring-boot-starter-security-admin/src/main/java/cn/iocoder/mall/security/admin/core/interceptor/AdminDemoInterceptor.java
浏览文件 @
e0ab6b84
...
...
@@ -19,8 +19,9 @@ public class AdminDemoInterceptor extends HandlerInterceptorAdapter {
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
{
// 当 Admin 编号等于 0 时,约定为演示账号
if
(
Objects
.
equals
(
AdminSecurityContextHolder
.
getAdminId
(),
0
)
// 当 Admin 编号等于 1 时,约定为演示账号
// TODO 芋艿,后续去优化
if
(
Objects
.
equals
(
AdminSecurityContextHolder
.
getAdminId
(),
1
)
&&
request
.
getMethod
().
equalsIgnoreCase
(
HttpMethod
.
POST
.
toString
()))
{
throw
ServiceExceptionUtil
.
exception
(
SystemErrorCodeConstants
.
PERMISSION_DEMO_PERMISSION_DENY
);
}
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/PassportController.java
浏览文件 @
e0ab6b84
...
...
@@ -12,13 +12,9 @@ import cn.iocoder.security.annotations.RequiresNone;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -46,6 +42,14 @@ public class PassportController {
return
success
(
passportManager
.
getAdmin
(
AdminSecurityContextHolder
.
getAdminId
()));
}
@PostMapping
(
"/refresh-token"
)
@ApiOperation
(
"刷新令牌"
)
@RequiresNone
public
CommonResult
<
PassportAccessTokenVO
>
refreshToken
(
@RequestParam
(
"refreshToken"
)
String
refreshToken
,
HttpServletRequest
request
)
{
return
success
(
passportManager
.
refreshToken
(
refreshToken
,
HttpUtil
.
getIp
(
request
)));
}
// TODO 优化点:迁移到 PermissionController
@GetMapping
(
"/tree-admin-menu"
)
@ApiOperation
(
"获得当前管理员的菜单树"
)
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/passport/PassportManager.java
浏览文件 @
e0ab6b84
...
...
@@ -15,12 +15,13 @@ import cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum;
import
cn.iocoder.mall.systemservice.rpc.admin.AdminRpc
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.RoleRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.apache.dubbo.config.annotation.
Dubbo
Reference
;
import
org.springframework.stereotype.Service
;
import
java.util.Collections
;
...
...
@@ -30,13 +31,13 @@ import java.util.Set;
@Service
public
class
PassportManager
{
@Reference
(
version
=
"${dubbo.consumer.AdminRpc.version}"
)
@
Dubbo
Reference
(
version
=
"${dubbo.consumer.AdminRpc.version}"
)
private
AdminRpc
adminRpc
;
@Reference
(
version
=
"${dubbo.consumer.OAuth2Rpc.version}"
)
@
Dubbo
Reference
(
version
=
"${dubbo.consumer.OAuth2Rpc.version}"
)
private
OAuth2Rpc
oauth2Rpc
;
@Reference
(
version
=
"${dubbo.consumer.RoleRpc.version}"
)
@
Dubbo
Reference
(
version
=
"${dubbo.consumer.RoleRpc.version}"
)
private
RoleRpc
roleRpc
;
@Reference
(
version
=
"${dubbo.consumer.ResourceRpc.version}"
)
@
Dubbo
Reference
(
version
=
"${dubbo.consumer.ResourceRpc.version}"
)
private
ResourceRpc
resourceRpc
;
public
PassportAccessTokenVO
login
(
PassportLoginDTO
loginDTO
,
String
ip
)
{
...
...
@@ -59,6 +60,13 @@ public class PassportManager {
return
AdminPassportConvert
.
INSTANCE
.
convert
(
getAdminResult
.
getData
());
}
public
PassportAccessTokenVO
refreshToken
(
String
refreshToken
,
String
ip
)
{
CommonResult
<
OAuth2AccessTokenRespDTO
>
refreshAccessTokenResult
=
oauth2Rpc
.
refreshAccessToken
(
new
OAuth2RefreshAccessTokenReqDTO
().
setRefreshToken
(
refreshToken
).
setCreateIp
(
ip
));
refreshAccessTokenResult
.
checkError
();
return
AdminPassportConvert
.
INSTANCE
.
convert
(
refreshAccessTokenResult
.
getData
());
}
/**
* 获得指定管理员的权限列表
*
...
...
management-web-app/src/main/resources/application-dev.yml
浏览文件 @
e0ab6b84
...
...
@@ -13,3 +13,6 @@ dubbo:
registry
:
# address: spring-cloud://400-infra.server.iocoder.cn:8848 # 指定 Dubbo 服务注册中心的地址
address
:
nacos://400-infra.server.iocoder.cn:8848?namespace=dev
# 指定 Dubbo 服务注册中心的地址
# Mall 认证安全配置
mall.security.admin.demo
:
true
# 是否开启演示模式
user-web-app/src/main/java/cn/iocoder/mall/userweb/controller/passport/PassportController.http
浏览文件 @
e0ab6b84
...
...
@@ -10,4 +10,10 @@ Content-Type: application/x-www-form-urlencoded
mobile=15601691300&scene=1
### /passport/refresh-token
POST {{user-api-base-url}}/passport/refresh-token
Content-Type: application/x-www-form-urlencoded
refreshToken=77abd74e84e34cfc8aba9625317a14a3
###
user-web-app/src/main/java/cn/iocoder/mall/userweb/controller/passport/PassportController.java
浏览文件 @
e0ab6b84
...
...
@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiOperation;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -44,4 +45,12 @@ public class PassportController {
return
success
(
true
);
}
@PostMapping
(
"/refresh-token"
)
@ApiOperation
(
"刷新令牌"
)
@RequiresNone
public
CommonResult
<
PassportAccessTokenRespVO
>
refreshToken
(
@RequestParam
(
"refreshToken"
)
String
refreshToken
,
HttpServletRequest
request
)
{
return
success
(
passportManager
.
refreshToken
(
refreshToken
,
HttpUtil
.
getIp
(
request
)));
}
}
user-web-app/src/main/java/cn/iocoder/mall/userweb/manager/passport/PassportManager.java
浏览文件 @
e0ab6b84
...
...
@@ -5,6 +5,7 @@ import cn.iocoder.common.framework.vo.CommonResult;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2AccessTokenRespDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenReqDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2RefreshAccessTokenReqDTO
;
import
cn.iocoder.mall.userservice.enums.sms.UserSmsSceneEnum
;
import
cn.iocoder.mall.userservice.rpc.sms.UserSmsCodeRpc
;
import
cn.iocoder.mall.userservice.rpc.user.UserRpc
;
...
...
@@ -50,4 +51,11 @@ public class PassportManager {
sendSmsCodeResult
.
checkError
();
}
public
PassportAccessTokenRespVO
refreshToken
(
String
refreshToken
,
String
ip
)
{
CommonResult
<
OAuth2AccessTokenRespDTO
>
refreshAccessTokenResult
=
oauth2Rpc
.
refreshAccessToken
(
new
OAuth2RefreshAccessTokenReqDTO
().
setRefreshToken
(
refreshToken
).
setCreateIp
(
ip
));
refreshAccessTokenResult
.
checkError
();
return
PassportConvert
.
INSTANCE
.
convert
(
refreshAccessTokenResult
.
getData
());
}
}
user-web-app/src/main/resources/application.yml
浏览文件 @
e0ab6b84
...
...
@@ -25,6 +25,7 @@ dubbo:
consumer
:
timeout
:
10000
validation
:
true
# 开启 Consumer 的参数校验
check
:
false
# 本地启动,不进行校验,不一定会使用到未启动的服务,嘿嘿~
UserSmsCodeRpc
:
version
:
1.0.0
UserRpc
:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论