Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
school-paper-admin
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
school-paper
school-paper-admin
Commits
187f16c0
Commit
187f16c0
authored
Jul 31, 2023
by
yushien
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
《完善用户信息》修改用户登录错误提示
parent
ce36d8af
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
1 deletions
+36
-1
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
+36
-1
No files found.
ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java
View file @
187f16c0
...
@@ -75,7 +75,7 @@ public class SysLoginService {
...
@@ -75,7 +75,7 @@ public class SysLoginService {
validateCaptcha
(
username
,
code
,
uuid
,
request
);
validateCaptcha
(
username
,
code
,
uuid
,
request
);
}
}
SysUser
user
=
loadUserByUsername
(
username
);
SysUser
user
=
loadUserByUsername
(
username
);
checkLogin
(
LoginType
.
PASSWORD
,
username
,
()
->
!
BCrypt
.
checkpw
(
password
,
user
.
getPassword
()));
checkLogin
New
(
LoginType
.
PASSWORD
,
username
,
()
->
!
BCrypt
.
checkpw
(
password
,
user
.
getPassword
()));
// 此处可根据登录用户的数据不同 自行创建 loginUser
// 此处可根据登录用户的数据不同 自行创建 loginUser
LoginUser
loginUser
=
buildLoginUser
(
user
);
LoginUser
loginUser
=
buildLoginUser
(
user
);
// 生成token
// 生成token
...
@@ -292,4 +292,39 @@ public class SysLoginService {
...
@@ -292,4 +292,39 @@ public class SysLoginService {
// 登录成功 清空错误次数
// 登录成功 清空错误次数
RedisUtils
.
deleteObject
(
errorKey
);
RedisUtils
.
deleteObject
(
errorKey
);
}
}
/**
* 登录校验
*/
private
void
checkLoginNew
(
LoginType
loginType
,
String
username
,
Supplier
<
Boolean
>
supplier
)
{
String
errorKey
=
CacheConstants
.
PWD_ERR_CNT_KEY
+
username
;
String
loginFail
=
Constants
.
LOGIN_FAIL
;
// 获取用户登录错误次数(可自定义限制策略 例如: key + username + ip)
Integer
errorNumber
=
RedisUtils
.
getCacheObject
(
errorKey
);
// 锁定时间内登录 则踢出
if
(
ObjectUtil
.
isNotNull
(
errorNumber
)
&&
errorNumber
.
equals
(
maxRetryCount
))
{
recordLogininfor
(
username
,
loginFail
,
MessageUtils
.
message
(
loginType
.
getRetryLimitExceed
(),
maxRetryCount
,
lockTime
));
throw
new
ServiceException
(
"账号密码错误"
+
maxRetryCount
+
"次"
);
}
if
(
supplier
.
get
())
{
// 是否第一次
errorNumber
=
ObjectUtil
.
isNull
(
errorNumber
)
?
1
:
errorNumber
+
1
;
// 达到规定错误次数 则锁定登录
if
(
errorNumber
.
equals
(
maxRetryCount
))
{
RedisUtils
.
setCacheObject
(
errorKey
,
errorNumber
,
Duration
.
ofMinutes
(
lockTime
));
recordLogininfor
(
username
,
loginFail
,
MessageUtils
.
message
(
loginType
.
getRetryLimitExceed
(),
maxRetryCount
,
lockTime
));
throw
new
ServiceException
(
"账号密码错误"
+
maxRetryCount
+
"次"
);
}
else
{
// 未达到规定错误次数 则递增
RedisUtils
.
setCacheObject
(
errorKey
,
errorNumber
);
recordLogininfor
(
username
,
loginFail
,
MessageUtils
.
message
(
loginType
.
getRetryLimitCount
(),
errorNumber
));
throw
new
ServiceException
(
"账号密码错误"
+
errorNumber
+
"次"
);
}
}
// 登录成功 清空错误次数
RedisUtils
.
deleteObject
(
errorKey
);
}
}
}
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