Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz4j Spring R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7后台标准模板
iBiz4j Spring R7
提交
b5187dc7
提交
b5187dc7
编写于
12月 13, 2020
作者:
zhouweidong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
token续期
上级
1e4f82c3
变更
1
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
41 行增加
和
4 行删除
+41
-4
AuthorizationTokenFilter.java.ftl
..._PKGPATH%/util/security/AuthorizationTokenFilter.java.ftl
+41
-4
未找到文件。
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/security/AuthorizationTokenFilter.java.ftl
浏览文件 @
b5187dc7
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
<#
assign
validExpiredToken
=
false
>
<#
if
sys
.
getAllPSDevSlnMSDepAPIs
()??>
<#
list
sys
.
getAllPSDevSlnMSDepAPIs
()
as
depSysApi
>
<#
if
((
depSysApi
.
getUserParam
(
"ibiz.refreshtoken"
,
""
))
!'') =="true">
<#
assign
validExpiredToken
=
true
>
</#
if
>
</#
list
>
</#
if
>
package
${
pub
.
getPKGCodeName
()}.
util
.
security
;
import
io
.
jsonwebtoken
.
ExpiredJwtException
;
...
...
@@ -23,15 +31,20 @@ import javax.servlet.ServletException;
import
javax
.
servlet
.
http
.
HttpServletRequest
;
import
javax
.
servlet
.
http
.
HttpServletResponse
;
import
java
.
io
.
IOException
;
import
java
.
util
.
Arrays
;
import
java
.
util
.
HashSet
;
import
java
.
util
.
Iterator
;
import
java
.
util
.
Set
;
import
java
.
util
.*;
<#
if
validExpiredToken
>
import
org
.
springframework
.
util
.
StringUtils
;
import
org
.
springframework
.
util
.
ObjectUtils
;
</#
if
>
@
Slf4j
@
Component
public
class
AuthorizationTokenFilter
extends
OncePerRequestFilter
{
<#
if
validExpiredToken
>
@
Value
(${
r
'"${ibiz.jwt.expiration:7200000}"'
})
private
Long
expiration
;
</#
if
>
private
final
UserDetailsService
userDetailsService
;
private
final
AuthTokenUtil
authTokenUtil
;
private
final
String
tokenHeader
;
...
...
@@ -71,6 +84,9 @@ public class AuthorizationTokenFilter extends OncePerRequestFilter {
UsernamePasswordAuthenticationToken
authentication
=
new
UsernamePasswordAuthenticationToken
(
userDetails
,
null
,
userDetails
.
getAuthorities
());
authentication
.
setDetails
(
new
WebAuthenticationDetailsSource
().
buildDetails
(
request
));
SecurityContextHolder
.
getContext
().
setAuthentication
(
authentication
);
<#
if
validExpiredToken
>
validExpiredToken
(
authToken
,
response
);
</#
if
>
}
}
chain
.
doFilter
(
request
,
response
);
...
...
@@ -99,4 +115,25 @@ public class AuthorizationTokenFilter extends OncePerRequestFilter {
return
true
;
}
}
<#
if
validExpiredToken
>
/**
*
检查
token
是否到期
*
*
@
param
authToken
*
@
param
response
*/
private
void
validExpiredToken
(
String
authToken
,
HttpServletResponse
response
)
{
try
{
Date
token
=
authTokenUtil
.
getExpirationDateFromToken
(
authToken
);
if
(
!ObjectUtils.isEmpty(token) && !ObjectUtils.isEmpty(expiration) &&
token
.
getTime
()
-
(
expiration
/
4
)
<=
System
.
currentTimeMillis
())
{
if
(
StringUtils
.
isEmpty
(
response
.
getHeader
(
"RefreshToken"
)))
{
response
.
setHeader
(
"RefreshToken"
,
"true"
);
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"token有效期检查发生异常,"
+
e
);
}
}
</#
if
>
}
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录