Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
self-service
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
廖旭伟
self-service
Commits
66c911bb
Commit
66c911bb
authored
Nov 16, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加用户同步接口
parent
7fc2252a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
52 additions
and
57 deletions
+52
-57
sst-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java
.../xhx/base/framework/interceptor/AuthTokenServiceImpl.java
+50
-11
sst-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserForm.java
...n/java/com/mortals/xhx/base/system/user/web/UserForm.java
+0
-46
sst-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
...er/src/main/java/com/mortals/xhx/common/key/RedisKey.java
+2
-0
No files found.
sst-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java
View file @
66c911bb
...
...
@@ -7,31 +7,42 @@ import com.mortals.framework.service.ICacheService;
import
com.mortals.framework.service.IUser
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.xhx.base.system.resource.service.ResourceService
;
import
com.mortals.xhx.base.system.user.model.UserEntity
;
import
com.mortals.xhx.base.system.user.service.UserService
;
import
com.mortals.xhx.common.key.RedisKey
;
import
com.mortals.xhx.common.utils.MenuEncodeUtil
;
import
io.jsonwebtoken.Claims
;
import
io.jsonwebtoken.Jwts
;
import
io.jsonwebtoken.SignatureAlgorithm
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Base64
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
/**
* token验证处理
*
* @author zxfei
*/
@Primary
@Service
@Order
(
1
)
@Slf4j
public
class
AuthTokenServiceImpl
implements
IAuthTokenService
{
@Autowired
private
UserService
userService
;
// 令牌自定义标识
@Value
(
"${token.header:Authorization}"
)
private
String
header
;
...
...
@@ -54,9 +65,6 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
@Value
(
"${token.database:0}"
)
private
Integer
portalDb
;
@Value
(
"${platform.type:cloud}"
)
private
String
platFormType
;
//版本,默认云服务版本
protected
static
final
Long
SECOND
=
1
l
;
protected
static
final
Long
SECOND_MINUTE
=
60
*
SECOND
;
...
...
@@ -72,6 +80,10 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
@Autowired
private
ICacheService
cacheService
;
@Autowired
private
ResourceService
resourceService
;
/**
* 获取信息
*
...
...
@@ -84,19 +96,39 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
String
token
=
getToken
(
request
);
if
(
StringUtils
.
isNotEmpty
(
token
))
{
try
{
boolean
signed
=
Jwts
.
parser
().
isSigned
(
token
);
if
(!
signed
)
{
log
.
error
(
"token非法!=>{}"
,
token
);
return
null
;
}
Claims
claims
=
parseToken
(
token
);
String
uuid
=
(
String
)
claims
.
get
(
SysConstains
.
LOGIN_USER_KEY
);
String
userKey
=
getTokenKey
(
uuid
);
cacheService
.
select
(
portalDb
);
String
userStr
=
cacheService
.
get
(
userKey
);
//刷新token时间
UserEntity
userEntity
=
JSONObject
.
parseObject
(
userStr
,
UserEntity
.
class
);
if
(!
ObjectUtils
.
isEmpty
(
userEntity
))
{
verifyToken
(
userEntity
);
}
cacheService
.
select
(
db
);
if
(
StringUtils
.
isNotEmpty
(
userStr
))
{
UserEntity
userEntity
=
JSONObject
.
parseObject
(
userStr
,
UserEntity
.
class
);
userEntity
.
setToken
(
token
);
if
(!
ObjectUtils
.
isEmpty
(
userEntity
))
{
UserEntity
temp
=
userService
.
getExtCache
(
userEntity
.
getLoginName
());
if
(!
ObjectUtils
.
isEmpty
(
temp
))
{
userEntity
.
setId
(
temp
.
getId
());
}
//更新resource 路径
String
menuUrlCode
=
cacheService
.
hget
(
RedisKey
.
KEY_USER_MENU_CACHE
,
userEntity
.
getId
().
toString
(),
String
.
class
);
if
(
ObjectUtils
.
isEmpty
(
menuUrlCode
))
{
Set
<
String
>
urls
=
resourceService
.
findUrlSetByUserId
(
userEntity
.
getId
());
menuUrlCode
=
MenuEncodeUtil
.
generateMenuUrlCode
(
urls
);
cacheService
.
hset
(
RedisKey
.
KEY_USER_MENU_CACHE
,
userEntity
.
getId
().
toString
(),
menuUrlCode
);
}
userEntity
.
setMenuUrl
(
menuUrlCode
);
return
userEntity
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"解析jwt token异常!
"
,
e
);
log
.
error
(
"解析jwt token异常!
,token:{}"
,
token
,
e
);
return
null
;
}
}
...
...
@@ -150,8 +182,8 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
public
void
verifyToken
(
IUser
user
)
{
long
expireTime
=
user
.
getExpireTime
();
long
currentTime
=
System
.
currentTimeMillis
();
if
(
expireTime
-
currentTime
<=
SECOND_MINUTE_TEN
)
{
log
.
info
(
"不足十分钟,刷新过期时间"
);
if
(
expireTime
-
currentTime
<=
SECOND_MINUTE_TEN
*
1000
)
{
log
.
info
(
"不足
二
十分钟,刷新过期时间"
);
refreshToken
(
user
);
}
}
...
...
@@ -163,7 +195,7 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
*/
public
void
refreshToken
(
IUser
user
)
{
//user.setLoginTime(System.currentTimeMillis());
user
.
setExpireTime
(
user
.
getLoginTime
()
==
null
?
System
.
currentTimeMillis
()
:
user
.
getLoginTime
()
+
expireTime
*
SECOND_MINUTE
);
user
.
setExpireTime
(
user
.
getLoginTime
()
==
null
?
System
.
currentTimeMillis
()
:
user
.
getLoginTime
()
+
expireTime
*
SECOND_MINUTE
*
1000
);
// 根据uuid将user缓存
String
userKey
=
getTokenKey
(
user
.
getToken
());
//设置有效时间 单位秒
...
...
@@ -230,4 +262,11 @@ public class AuthTokenServiceImpl implements IAuthTokenService {
private
String
getTokenKey
(
String
uuid
)
{
return
SysConstains
.
LOGIN_TOKEN_KEY
+
uuid
;
}
public
static
void
main
(
String
[]
args
)
{
// boolean signed = Jwts.parser().isSigned("123");
boolean
signed
=
Jwts
.
parser
().
isSigned
(
"eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc"
);
System
.
out
.
println
(
signed
);
}
}
sst-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserForm.java
deleted
100644 → 0
View file @
7fc2252a
/**
* 文件:UserForm.java
* 版本:1.0.0
* 日期:
* Copyright ®
* All right reserved.
*/
package
com.mortals.xhx.base.system.user.web
;
import
com.mortals.framework.web.BaseCRUDFormLong
;
import
com.mortals.xhx.base.system.user.model.UserEntity
;
import
com.mortals.xhx.base.system.user.model.UserQuery
;
/**
* <p>Title: 用户信息</p>
* <p>Description: UserForm </p>
* <p>Copyright: Copyright ® </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public
class
UserForm
extends
BaseCRUDFormLong
<
UserEntity
>
{
private
UserEntity
entity
=
new
UserEntity
();
private
UserQuery
query
=
new
UserQuery
();
public
UserForm
(){
}
@Override
public
UserEntity
getEntity
()
{
return
entity
;
}
public
void
setEntity
(
UserEntity
entity
)
{
this
.
entity
=
entity
;
}
@Override
public
UserQuery
getQuery
()
{
return
query
;
}
public
void
setQuery
(
UserQuery
query
)
{
this
.
query
=
query
;
}
}
\ No newline at end of file
sst-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
View file @
66c911bb
...
...
@@ -10,4 +10,6 @@ public class RedisKey {
*/
public
static
final
String
KEY_MENU_CACHE
=
"iot:base:MenuCacheKey:"
;
public
static
final
String
KEY_USER_MENU_CACHE
=
"user:menu"
;
}
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