Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
liyeyun-user-web
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cfld-backend
liyeyun-user-web
Commits
ad91f294
Commit
ad91f294
authored
Dec 15, 2023
by
zhouxudong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
七天过期
parent
1e8587ab
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
58 additions
and
19 deletions
+58
-19
CurrentUserInterceptor.java
...java/com/lyy/user/config/auth/CurrentUserInterceptor.java
+14
-5
Constants.java
src/main/java/com/lyy/user/constant/Constants.java
+2
-0
RedisConstants.java
src/main/java/com/lyy/user/constant/RedisConstants.java
+2
-0
SysUserInfoServiceImpl.java
...user/moudle/user/service/impl/SysUserInfoServiceImpl.java
+36
-14
LoginVo.java
src/main/java/com/lyy/user/moudle/user/vo/LoginVo.java
+2
-0
PhoneLoginVo.java
src/main/java/com/lyy/user/moudle/user/vo/PhoneLoginVo.java
+2
-0
No files found.
src/main/java/com/lyy/user/config/auth/CurrentUserInterceptor.java
View file @
ad91f294
...
@@ -25,20 +25,29 @@ public class CurrentUserInterceptor implements AsyncHandlerInterceptor {
...
@@ -25,20 +25,29 @@ public class CurrentUserInterceptor implements AsyncHandlerInterceptor {
throws
Exception
{
throws
Exception
{
// 从header中获取权限请求头
// 从header中获取权限请求头
String
authToken
=
request
.
getHeader
(
Constants
.
TOKEN_HEADER
);
String
authToken
=
request
.
getHeader
(
Constants
.
TOKEN_HEADER
);
if
(
StringUtils
.
isBlank
(
authToken
))
{
if
(
StringUtils
.
isBlank
(
authToken
))
{
throw
new
AuthException
(
"未授权,请重新登录"
);
throw
new
AuthException
(
"未授权,请重新登录"
);
}
}
String
token
=
authToken
.
substring
(
"Bearer"
.
length
()
+
1
).
trim
();
String
token
=
authToken
.
substring
(
"Bearer"
.
length
()
+
1
).
trim
();
JwtInfo
jwtUser
=
JwtTokenUtil
.
getJwtUser
(
token
);
JwtInfo
jwtUser
=
JwtTokenUtil
.
getJwtUser
(
token
);
Object
redisToken
=
RedisUtil
.
get
(
RedisConstants
.
token
+
jwtUser
.
getPhone
());
Object
redisToken
=
RedisUtil
.
get
(
RedisConstants
.
token
+
jwtUser
.
getPhone
());
if
(
ObjectUtils
.
isEmpty
(
redisToken
)||!
token
.
equals
(
redisToken
))
{
if
(
ObjectUtils
.
isEmpty
(
redisToken
)
||
!
token
.
equals
(
redisToken
))
{
throw
new
AuthException
(
"当前会话失效,请重新登录"
);
throw
new
AuthException
(
"当前会话失效,请重新登录"
);
}
}
//判断是否续期
//
判断是否续期
Long
expire
=
RedisUtil
.
getExpire
(
RedisConstants
.
token
+
jwtUser
.
getPhone
());
Long
expire
=
RedisUtil
.
getExpire
(
RedisConstants
.
token
+
jwtUser
.
getPhone
());
if
(
expire
<
Constants
.
addTime
){
if
(
expire
<
Constants
.
addTime
)
{
RedisUtil
.
set
(
RedisConstants
.
token
+
jwtUser
.
getPhone
(),
token
,
Constants
.
expireTime
,
TimeUnit
.
SECONDS
);
Object
result
=
RedisUtil
.
get
(
RedisConstants
.
seventoken
+
jwtUser
.
getPhone
());
RedisUtil
.
set
(
RedisConstants
.
token
+
jwtUser
.
getPhone
(),
token
,
(!
ObjectUtils
.
isEmpty
(
result
)
&&
Boolean
.
parseBoolean
(
result
.
toString
()))
?
Constants
.
sevenTime
:
Constants
.
expireTime
,
TimeUnit
.
SECONDS
);
}
}
// 根据token信息,生成当前登录用户信息的设置,存放容器threadlocal
// 根据token信息,生成当前登录用户信息的设置,存放容器threadlocal
BaseContextHandler
.
setCurrentUserInfo
(
jwtUser
);
BaseContextHandler
.
setCurrentUserInfo
(
jwtUser
);
...
...
src/main/java/com/lyy/user/constant/Constants.java
View file @
ad91f294
...
@@ -129,6 +129,8 @@ public class Constants {
...
@@ -129,6 +129,8 @@ public class Constants {
public
static
final
int
INTERVAL_TIME
=
4
*
60
;
public
static
final
int
INTERVAL_TIME
=
4
*
60
;
//token 过期时间
//token 过期时间
public
static
Long
expireTime
=
86400L
;
public
static
Long
expireTime
=
86400L
;
//7天免登录
public
static
Long
sevenTime
=
604800L
;
//token 续期时间 12小时
//token 续期时间 12小时
public
static
Long
addTime
=
43200L
;
public
static
Long
addTime
=
43200L
;
...
...
src/main/java/com/lyy/user/constant/RedisConstants.java
View file @
ad91f294
...
@@ -10,6 +10,8 @@ public class RedisConstants {
...
@@ -10,6 +10,8 @@ public class RedisConstants {
//------------------redis key--------------------------
//------------------redis key--------------------------
public
static
final
String
token
=
"Token:"
;
public
static
final
String
token
=
"Token:"
;
//是否7天免登录
public
static
final
String
seventoken
=
"Seven_Token:"
;
//手机验证码 规则: 手机验证码:验证码类型:手机号
//手机验证码 规则: 手机验证码:验证码类型:手机号
public
static
final
String
MSG_KEY
=
"phone:message:"
;
public
static
final
String
MSG_KEY
=
"phone:message:"
;
//用户查看数据详情 使用额度 map存储: 格式: key phone + ":" + type value
//用户查看数据详情 使用额度 map存储: 格式: key phone + ":" + type value
...
...
src/main/java/com/lyy/user/moudle/user/service/impl/SysUserInfoServiceImpl.java
View file @
ad91f294
...
@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.lyy.user.config.LyyConfig
;
import
com.lyy.user.config.LyyConfig
;
import
com.lyy.user.config.exception.ServiceException
;
import
com.lyy.user.config.exception.ServiceException
;
import
com.lyy.user.config.other.BaseContextHandler
;
import
com.lyy.user.config.other.BaseContextHandler
;
import
com.lyy.user.constant.Constants
;
import
com.lyy.user.constant.Constants
;
...
@@ -108,11 +107,22 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -108,11 +107,22 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
RedisUtil
.
set
(
RedisUtil
.
set
(
RedisConstants
.
token
+
sysUserInfo
.
getPhonenumber
(),
RedisConstants
.
token
+
sysUserInfo
.
getPhonenumber
(),
token
,
token
,
Constants
.
expireTime
,
(!
ObjectUtils
.
isEmpty
(
loginVo
.
getStatus
())
&&
loginVo
.
getStatus
())
?
Constants
.
sevenTime
:
Constants
.
expireTime
,
TimeUnit
.
SECONDS
);
TimeUnit
.
SECONDS
);
//将用户基本信息一起返回
//是否开启7天免登录
UserInfoVo
userInfoVo
=
new
UserInfoVo
()
RedisUtil
.
set
(
RedisConstants
.
seventoken
+
sysUserInfo
.
getPhonenumber
(),
!
ObjectUtils
.
isEmpty
(
loginVo
.
getStatus
())
&&
loginVo
.
getStatus
(),
(!
ObjectUtils
.
isEmpty
(
loginVo
.
getStatus
())
&&
loginVo
.
getStatus
())
?
Constants
.
sevenTime
:
Constants
.
expireTime
,
TimeUnit
.
SECONDS
);
// 将用户基本信息一起返回
UserInfoVo
userInfoVo
=
new
UserInfoVo
()
.
setUserId
(
sysUserInfo
.
getUserId
())
.
setUserId
(
sysUserInfo
.
getUserId
())
.
setPhone
(
StringUtils
.
overlay
(
sysUserInfo
.
getPhonenumber
(),
"****"
,
3
,
7
))
.
setPhone
(
StringUtils
.
overlay
(
sysUserInfo
.
getPhonenumber
(),
"****"
,
3
,
7
))
.
setToken
(
token
);
.
setToken
(
token
);
...
@@ -144,14 +154,27 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -144,14 +154,27 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
throw
new
ServiceException
(
MsgConstants
.
codeError
);
throw
new
ServiceException
(
MsgConstants
.
codeError
);
}
}
String
token
=
JwtTokenUtil
.
createToken
(
sysUserInfo
,
null
);
String
token
=
JwtTokenUtil
.
createToken
(
sysUserInfo
,
null
);
RedisUtil
.
set
(
RedisUtil
.
set
(
RedisConstants
.
token
+
sysUserInfo
.
getPhonenumber
(),
RedisConstants
.
token
+
sysUserInfo
.
getPhonenumber
(),
token
,
token
,
Constants
.
expireTime
,
(!
ObjectUtils
.
isEmpty
(
phoneLoginVo
.
getStatus
())
&&
phoneLoginVo
.
getStatus
())
?
Constants
.
sevenTime
:
Constants
.
expireTime
,
TimeUnit
.
SECONDS
);
TimeUnit
.
SECONDS
);
//将用户基本信息一起返回
//是否开启7天免登录
UserInfoVo
userInfoVo
=
new
UserInfoVo
()
RedisUtil
.
set
(
RedisConstants
.
seventoken
+
sysUserInfo
.
getPhonenumber
(),
!
ObjectUtils
.
isEmpty
(
phoneLoginVo
.
getStatus
())
&&
phoneLoginVo
.
getStatus
(),
(!
ObjectUtils
.
isEmpty
(
phoneLoginVo
.
getStatus
())
&&
phoneLoginVo
.
getStatus
())
?
Constants
.
sevenTime
:
Constants
.
expireTime
,
TimeUnit
.
SECONDS
);
// 将用户基本信息一起返回
UserInfoVo
userInfoVo
=
new
UserInfoVo
()
.
setUserId
(
sysUserInfo
.
getUserId
())
.
setUserId
(
sysUserInfo
.
getUserId
())
.
setPhone
(
StringUtils
.
overlay
(
sysUserInfo
.
getPhonenumber
(),
"****"
,
3
,
7
))
.
setPhone
(
StringUtils
.
overlay
(
sysUserInfo
.
getPhonenumber
(),
"****"
,
3
,
7
))
.
setToken
(
token
);
.
setToken
(
token
);
...
@@ -202,7 +225,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -202,7 +225,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
*/
*/
@Override
@Override
public
boolean
sendMsg
(
SendPhoneVo
sendPhoneVo
)
{
public
boolean
sendMsg
(
SendPhoneVo
sendPhoneVo
)
{
if
(
SendMsgTypeEnum
.
UPDATE_PASSWORD
.
getCode
().
equals
(
sendPhoneVo
.
getType
()))
{
if
(
SendMsgTypeEnum
.
UPDATE_PASSWORD
.
getCode
().
equals
(
sendPhoneVo
.
getType
()))
{
JwtInfo
currentUserInfo
=
BaseContextHandler
.
getCurrentUserInfo
();
JwtInfo
currentUserInfo
=
BaseContextHandler
.
getCurrentUserInfo
();
String
phone
=
currentUserInfo
.
getPhone
();
String
phone
=
currentUserInfo
.
getPhone
();
sendPhoneVo
.
setPhone
(
phone
);
sendPhoneVo
.
setPhone
(
phone
);
...
@@ -221,8 +244,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -221,8 +244,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
String
limitKey
=
RedisConstants
.
LIMIT_SMS
+
sendPhoneVo
.
getPhone
();
String
limitKey
=
RedisConstants
.
LIMIT_SMS
+
sendPhoneVo
.
getPhone
();
boolean
limitResult
=
RedisUtil
.
rateLimit
(
limitKey
,
intervalTime
,
limitSms
);
boolean
limitResult
=
RedisUtil
.
rateLimit
(
limitKey
,
intervalTime
,
limitSms
);
if
(!
limitResult
)
{
if
(!
limitResult
)
{
throw
new
ServiceException
(
String
.
format
(
MsgConstants
.
sms
,
limitSms
));
throw
new
ServiceException
(
String
.
format
(
MsgConstants
.
sms
,
limitSms
));
}
}
int
randomInt
=
RandomUtil
.
randomInt
(
100000
,
999999
);
int
randomInt
=
RandomUtil
.
randomInt
(
100000
,
999999
);
...
@@ -337,7 +360,6 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -337,7 +360,6 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
return
this
.
updateById
(
sysUserInfo
);
return
this
.
updateById
(
sysUserInfo
);
}
}
/**
/**
* @description: 修改密码
* @description: 修改密码
* @date: 2023/11/23 10:21
* @date: 2023/11/23 10:21
...
@@ -363,8 +385,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -363,8 +385,8 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
throw
new
ServiceException
(
MsgConstants
.
codeError
);
throw
new
ServiceException
(
MsgConstants
.
codeError
);
}
}
String
newPassword
=
String
newPassword
=
DigestUtils
.
md5DigestAsHex
(
DigestUtils
.
md5DigestAsHex
(
(
updateVo
.
getPassword
()
+
lyyConfig
.
getPasswordSalt
()).
getBytes
());
(
updateVo
.
getPassword
()
+
lyyConfig
.
getPasswordSalt
()).
getBytes
());
sysUserInfo
.
setPassword
(
newPassword
);
sysUserInfo
.
setPassword
(
newPassword
);
return
this
.
updateById
(
sysUserInfo
);
return
this
.
updateById
(
sysUserInfo
);
}
}
...
@@ -372,7 +394,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
...
@@ -372,7 +394,7 @@ public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUs
@Override
@Override
public
UserInfoVo
detail
()
{
public
UserInfoVo
detail
()
{
JwtInfo
jwtUser
=
BaseContextHandler
.
getCurrentUserInfo
();
JwtInfo
jwtUser
=
BaseContextHandler
.
getCurrentUserInfo
();
UserInfoVo
userInfoVo
=
BeanUtil
.
copyProperties
(
jwtUser
,
UserInfoVo
.
class
);
UserInfoVo
userInfoVo
=
BeanUtil
.
copyProperties
(
jwtUser
,
UserInfoVo
.
class
);
userInfoVo
.
setPhone
(
StringUtils
.
overlay
(
jwtUser
.
getPhone
(),
"****"
,
3
,
7
));
userInfoVo
.
setPhone
(
StringUtils
.
overlay
(
jwtUser
.
getPhone
(),
"****"
,
3
,
7
));
return
userInfoVo
;
return
userInfoVo
;
}
}
...
...
src/main/java/com/lyy/user/moudle/user/vo/LoginVo.java
View file @
ad91f294
...
@@ -38,4 +38,6 @@ public class LoginVo {
...
@@ -38,4 +38,6 @@ public class LoginVo {
// @Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\\\d)(?=.*[@$!%*#?&])[A-Za-z\\\\d@$!%*#?&]{6,20}$", message = "密码长度必须大于等于6位,小于等于20")
// @Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\\\d)(?=.*[@$!%*#?&])[A-Za-z\\\\d@$!%*#?&]{6,20}$", message = "密码长度必须大于等于6位,小于等于20")
@ApiModelProperty
(
value
=
"密码"
,
required
=
true
)
@ApiModelProperty
(
value
=
"密码"
,
required
=
true
)
private
String
password
;
private
String
password
;
@ApiModelProperty
(
value
=
"是否开启7天免登录"
)
private
Boolean
status
;
}
}
src/main/java/com/lyy/user/moudle/user/vo/PhoneLoginVo.java
View file @
ad91f294
...
@@ -30,4 +30,6 @@ public class PhoneLoginVo {
...
@@ -30,4 +30,6 @@ public class PhoneLoginVo {
@NotEmpty
(
message
=
"验证码不能为空"
)
@NotEmpty
(
message
=
"验证码不能为空"
)
@ApiModelProperty
(
value
=
"验证码"
,
required
=
true
)
@ApiModelProperty
(
value
=
"验证码"
,
required
=
true
)
private
String
code
;
private
String
code
;
@ApiModelProperty
(
value
=
"是否开启7天免登录"
)
private
Boolean
status
;
}
}
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