Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cas
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
陈天仲
cas
Commits
b39c28c8
Commit
b39c28c8
authored
Dec 05, 2023
by
chentianzhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交代码
parent
042d7bfb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
109 additions
and
45 deletions
+109
-45
src/main/java/com/zq/cas/controller/ViewController.java
+14
-3
src/main/java/com/zq/cas/entity/CasLoginDetail.java
+4
-0
src/main/java/com/zq/cas/handler/MyAuthenticationHandler.java
+85
-39
src/main/java/com/zq/cas/service/ICasLoginDetailService.java
+1
-1
src/main/java/com/zq/cas/service/impl/CasLoginDetailServiceImpl.java
+5
-2
No files found.
src/main/java/com/zq/cas/controller/ViewController.java
View file @
b39c28c8
package
com
.
zq
.
cas
.
controller
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.crypto.digest.MD5
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
cn.hutool.json.JSONObject
;
import
cn.hutool.json.JSONUtil
;
import
com.zq.cas.entity.SysUser
;
import
com.zq.cas.service.ISysUserService
;
import
com.zq.cas.util.MD5PasswordEncoderUtil
;
...
...
@@ -58,6 +61,13 @@ public class ViewController {
String
str
=
MD5
.
create
().
digestHex
(
sysUser
.
getUserId
()
+
"|"
+
sysUser
.
getUsername
()
+
"|"
+
sysUser
.
getPCode
()
+
"|"
+
sysUser
.
getPassword
());
if
(
str
.
equals
(
useKey
))
{
if
(
MD5PasswordEncoderUtil
.
encode
(
passwd
).
equals
(
sysUser
.
getPassword
()))
{
// boolean update = this.sysUserService.lambdaUpdate().eq(SysUser::getUsername, username).set(SysUser::getPassword, MD5PasswordEncoderUtil.encode(newPasswd)).update();
// if (update) {
// return ResultVo.success("修改密码成功");
// }
//修改mysql密码
final
String
url
=
"http://147.1.4.53:8888/user/updatePwdByXC"
;
...
...
@@ -70,9 +80,10 @@ public class ViewController {
HttpResponse
execute
=
request
.
execute
();
String
body
=
execute
.
body
();
log
.
info
(
"修改密码4.53响应=> "
+
body
);
if
(
execute
.
getStatus
()
==
200
)
{
boolean
update
=
this
.
sysUserService
.
lambdaUpdate
().
eq
(
SysUser:
:
getUsername
,
username
).
set
(
SysUser:
:
getPassword
,
MD5PasswordEncoderUtil
.
encode
(
newPasswd
)).
update
();
if
(
update
)
{
if
(
execute
.
getStatus
()
==
200
&&
StrUtil
.
isNotBlank
(
body
))
{
JSONObject
jsonObject
=
JSONUtil
.
parseObj
(
body
);
String
code
=
jsonObject
.
getStr
(
"code"
);
if
(
code
.
equals
(
"200"
)){
return
ResultVo
.
success
(
"修改密码成功"
);
}
}
else
{
...
...
src/main/java/com/zq/cas/entity/CasLoginDetail.java
View file @
b39c28c8
...
...
@@ -35,5 +35,9 @@ public class CasLoginDetail {
private
String
loginType
;
private
String
browser
;
private
String
os
;
}
src/main/java/com/zq/cas/handler/MyAuthenticationHandler.java
View file @
b39c28c8
package
com
.
zq
.
cas
.
handler
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.extra.servlet.ServletUtil
;
import
cn.hutool.http.Header
;
import
cn.hutool.http.useragent.Browser
;
import
cn.hutool.http.useragent.OS
;
import
cn.hutool.http.useragent.UserAgent
;
import
cn.hutool.http.useragent.UserAgentUtil
;
import
com.zq.cas.credential.MyUsernamePasswordCredential
;
import
com.zq.cas.entity.SysUser
;
import
com.zq.cas.exception.PasswordErrorException
;
...
...
@@ -61,52 +67,92 @@ public class MyAuthenticationHandler extends AbstractPreAndPostProcessingAuthent
@Override
protected
AuthenticationHandlerExecutionResult
doAuthentication
(
Credential
credential
)
throws
GeneralSecurityException
,
PreventedException
{
MyUsernamePasswordCredential
myCredential
=
(
MyUsernamePasswordCredential
)
credential
;
String
username
=
myCredential
.
getUsername
();
String
password
=
myCredential
.
getPassword
();
String
loginType
=
myCredential
.
getLoginType
();
if
(!
username
.
contains
(
"@gxfy.com"
))
{
username
+=
"@gxfy.com"
;
MyUsernamePasswordCredential
myCredential
=
(
MyUsernamePasswordCredential
)
credential
;
String
username
=
myCredential
.
getUsername
();
String
password
=
myCredential
.
getPassword
();
String
loginType
=
myCredential
.
getLoginType
();
if
(!
username
.
contains
(
"@gxfy.com"
))
{
username
+=
"@gxfy.com"
;
}
ServletRequestAttributes
servletRequestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
servletRequestAttributes
.
getRequest
();
String
ipAddr
=
ServletUtil
.
getClientIP
(
request
);
String
ua
=
request
.
getHeader
(
Header
.
USER_AGENT
.
toString
());
// if (StrUtil.isNotBlank(ua)){
// UserAgent userAgent = UserAgentUtil.parse(ua);
// //获取浏览器对象
// String browser = userAgent.getBrowser().getName();
// //获取操作系统对象
// String os = userAgent.getOs().toString();
// System.out.println("浏览器名:"+browser.getName());
// System.out.println("浏览器类型:"+browser.getBrowserType());
// System.out.println("浏览器家族:"+browser.getGroup());
// System.out.println("浏览器生产厂商:"+browser.getManufacturer());
// System.out.println("浏览器使用的渲染引擎:"+browser.getRenderingEngine());
// System.out.println("浏览器版本:"+userAgent.getBrowserVersion());
//
// System.out.println("操作系统名:"+operatingSystem.getName());
// System.out.println("访问设备类型:"+operatingSystem.getDeviceType());
// System.out.println("操作系统家族:"+operatingSystem.getGroup());
// System.out.println("操作系统生产厂商:"+operatingSystem.getManufacturer());
//
// }
logger
.
info
(
"登录的用户名:{}; 密码 :{} ; ip地址:{}; 类型 :{}"
,
username
,
password
,
ipAddr
,
loginType
);
SysUser
sysUser
=
null
;
if
(
loginType
.
trim
().
equals
(
"2"
))
{
sysUser
=
sysUserService
.
findByUsername
(
username
);
if
(
sysUser
==
null
)
{
throw
new
AccountNotFoundException
(
"无此对象"
);
}
}
else
{
String
md5password
=
MD5PasswordEncoderUtil
.
encode
(
password
);
sysUser
=
sysUserService
.
findByUsername
(
username
);
//sysUser = sysUserService.findByUsernameAndPwd(username, password);
if
(
sysUser
==
null
)
{
throw
new
AccountNotFoundException
(
"无此对象"
);
}
ServletRequestAttributes
servletRequestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
servletRequestAttributes
.
getRequest
();
String
ipAddr
=
ServletUtil
.
getClientIP
(
request
);
logger
.
info
(
"登录的用户名:{}; 密码 :{} ; ip地址:{}; 类型 :{}"
,
username
,
password
,
ipAddr
,
loginType
);
SysUser
sysUser
=
null
;
if
(
loginType
.
trim
().
equals
(
"2"
))
{
sysUser
=
sysUserService
.
findByUsername
(
username
);
if
(
sysUser
==
null
)
{
throw
new
AccountNotFoundException
(
"无此对象"
);
}
}
else
{
String
md5password
=
MD5PasswordEncoderUtil
.
encode
(
password
);
sysUser
=
sysUserService
.
findByUsername
(
username
);
//sysUser = sysUserService.findByUsernameAndPwd(username, password);
if
(
sysUser
==
null
)
{
throw
new
AccountNotFoundException
(
"无此对象"
);
}
if
(!
password
.
equals
(
OmnipotentPassword
.
password
())
&&
!
md5password
.
equals
(
sysUser
.
getPassword
()))
{
throw
new
PasswordErrorException
(
"密码错误"
);
}
if
(!
password
.
equals
(
OmnipotentPassword
.
password
())
&&
!
md5password
.
equals
(
sysUser
.
getPassword
()))
{
throw
new
PasswordErrorException
(
"密码错误"
);
}
}
String
browser
=
null
;
String
os
=
null
;
if
(
StrUtil
.
isNotBlank
(
ua
))
{
UserAgent
userAgent
=
UserAgentUtil
.
parse
(
ua
);
//获取浏览器对象
browser
=
userAgent
.
getBrowser
().
getName
();
//获取操作系统对象
os
=
userAgent
.
getOs
().
toString
();
}
casLoginDetailService
.
saveLoginDetail
(
sysUser
,
ipAddr
,
loginType
);
casLoginDetailService
.
saveLoginDetail
(
sysUser
,
ipAddr
,
loginType
,
browser
,
os
);
//自定义返回信息
Map
<
String
,
Object
>
message
=
new
LinkedHashMap
<>();
message
.
put
(
"loginId"
,
sysUser
.
getUsername
());
message
.
put
(
"nickname"
,
sysUser
.
getNickName
());
message
.
put
(
"rybs"
,
sysUser
.
getPCode
());
message
.
put
(
"fybm"
,
sysUser
.
getCourtCode
());
message
.
put
(
"jgbs"
,
sysUser
.
getOrgCode
());
//自定义返回信息
Map
<
String
,
Object
>
message
=
new
LinkedHashMap
<>();
message
.
put
(
"loginId"
,
sysUser
.
getUsername
());
message
.
put
(
"nickname"
,
sysUser
.
getNickName
());
message
.
put
(
"rybs"
,
sysUser
.
getPCode
());
message
.
put
(
"fybm"
,
sysUser
.
getCourtCode
());
message
.
put
(
"jgbs"
,
sysUser
.
getOrgCode
());
return
createHandlerResult
(
credential
,
this
.
principalFactory
.
createPrincipal
(
username
,
message
),
new
ArrayList
<>(
0
));
return
createHandlerResult
(
credential
,
this
.
principalFactory
.
createPrincipal
(
username
,
message
),
new
ArrayList
<>(
0
));
}
@Override
...
...
src/main/java/com/zq/cas/service/ICasLoginDetailService.java
View file @
b39c28c8
...
...
@@ -6,5 +6,5 @@ import com.zq.cas.entity.SysUser;
public
interface
ICasLoginDetailService
extends
IService
<
CasLoginDetail
>
{
void
saveLoginDetail
(
SysUser
sysUser
,
String
ip
,
String
loginType
);
void
saveLoginDetail
(
SysUser
sysUser
,
String
ip
,
String
loginType
,
String
browser
,
String
os
);
}
src/main/java/com/zq/cas/service/impl/CasLoginDetailServiceImpl.java
View file @
b39c28c8
...
...
@@ -16,7 +16,7 @@ import java.util.Date;
public
class
CasLoginDetailServiceImpl
extends
ServiceImpl
<
CasLoginDetailMapper
,
CasLoginDetail
>
implements
ICasLoginDetailService
{
@Override
public
void
saveLoginDetail
(
SysUser
sysUser
,
String
ip
,
String
loginType
)
{
public
void
saveLoginDetail
(
SysUser
sysUser
,
String
ip
,
String
loginType
,
String
browser
,
String
os
)
{
CasLoginDetail
casLoginDetail
=
CasLoginDetail
.
builder
()
.
userId
(
sysUser
.
getUserId
())
.
userName
(
sysUser
.
getUsername
())
...
...
@@ -26,7 +26,10 @@ public class CasLoginDetailServiceImpl extends ServiceImpl<CasLoginDetailMapper,
.
orgIdentify
(
sysUser
.
getOrgCode
())
.
ip
(
ip
)
.
loginTime
(
new
Date
())
.
loginType
(
loginType
).
build
();
.
loginType
(
loginType
)
.
browser
(
browser
)
.
os
(
os
)
.
build
();
this
.
save
(
casLoginDetail
);
}
}
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