Commit b39c28c8 by chentianzhong

提交代码

parent 042d7bfb
package com.zq.cas.controller; package com.zq.cas.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.MD5; import cn.hutool.crypto.digest.MD5;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; 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.entity.SysUser;
import com.zq.cas.service.ISysUserService; import com.zq.cas.service.ISysUserService;
import com.zq.cas.util.MD5PasswordEncoderUtil; import com.zq.cas.util.MD5PasswordEncoderUtil;
...@@ -58,6 +61,13 @@ public class ViewController { ...@@ -58,6 +61,13 @@ public class ViewController {
String str = MD5.create().digestHex(sysUser.getUserId() + "|" + sysUser.getUsername() + "|" + sysUser.getPCode() + "|" + sysUser.getPassword()); String str = MD5.create().digestHex(sysUser.getUserId() + "|" + sysUser.getUsername() + "|" + sysUser.getPCode() + "|" + sysUser.getPassword());
if (str.equals(useKey)) { if (str.equals(useKey)) {
if (MD5PasswordEncoderUtil.encode(passwd).equals(sysUser.getPassword())) { 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密码 //修改mysql密码
final String url = "http://147.1.4.53:8888/user/updatePwdByXC"; final String url = "http://147.1.4.53:8888/user/updatePwdByXC";
...@@ -70,9 +80,10 @@ public class ViewController { ...@@ -70,9 +80,10 @@ public class ViewController {
HttpResponse execute = request.execute(); HttpResponse execute = request.execute();
String body = execute.body(); String body = execute.body();
log.info("修改密码4.53响应=> " + body); log.info("修改密码4.53响应=> " + body);
if (execute.getStatus() == 200) { if (execute.getStatus() == 200 && StrUtil.isNotBlank(body)) {
boolean update = this.sysUserService.lambdaUpdate().eq(SysUser::getUsername, username).set(SysUser::getPassword, MD5PasswordEncoderUtil.encode(newPasswd)).update(); JSONObject jsonObject = JSONUtil.parseObj(body);
if (update) { String code = jsonObject.getStr("code");
if( code.equals("200")){
return ResultVo.success("修改密码成功"); return ResultVo.success("修改密码成功");
} }
}else { }else {
......
...@@ -35,5 +35,9 @@ public class CasLoginDetail { ...@@ -35,5 +35,9 @@ public class CasLoginDetail {
private String loginType; private String loginType;
private String browser;
private String os;
} }
package com.zq.cas.handler; package com.zq.cas.handler;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil; 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.credential.MyUsernamePasswordCredential;
import com.zq.cas.entity.SysUser; import com.zq.cas.entity.SysUser;
import com.zq.cas.exception.PasswordErrorException; import com.zq.cas.exception.PasswordErrorException;
...@@ -61,52 +67,92 @@ public class MyAuthenticationHandler extends AbstractPreAndPostProcessingAuthent ...@@ -61,52 +67,92 @@ public class MyAuthenticationHandler extends AbstractPreAndPostProcessingAuthent
@Override @Override
protected AuthenticationHandlerExecutionResult doAuthentication(Credential credential) throws GeneralSecurityException, PreventedException { 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")) { MyUsernamePasswordCredential myCredential = (MyUsernamePasswordCredential) credential;
username += "@gxfy.com";
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(); if (!password.equals(OmnipotentPassword.password())
HttpServletRequest request = servletRequestAttributes.getRequest(); && !md5password.equals(sysUser.getPassword())) {
String ipAddr = ServletUtil.getClientIP(request); throw new PasswordErrorException("密码错误");
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("密码错误");
}
} }
}
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<>(); Map<String, Object> message = new LinkedHashMap<>();
message.put("loginId", sysUser.getUsername()); message.put("loginId", sysUser.getUsername());
message.put("nickname", sysUser.getNickName()); message.put("nickname", sysUser.getNickName());
message.put("rybs", sysUser.getPCode()); message.put("rybs", sysUser.getPCode());
message.put("fybm", sysUser.getCourtCode()); message.put("fybm", sysUser.getCourtCode());
message.put("jgbs", sysUser.getOrgCode()); message.put("jgbs", sysUser.getOrgCode());
return createHandlerResult(credential, return createHandlerResult(credential,
this.principalFactory.createPrincipal(username, message), this.principalFactory.createPrincipal(username, message),
new ArrayList<>(0)); new ArrayList<>(0));
} }
@Override @Override
......
...@@ -6,5 +6,5 @@ import com.zq.cas.entity.SysUser; ...@@ -6,5 +6,5 @@ import com.zq.cas.entity.SysUser;
public interface ICasLoginDetailService extends IService<CasLoginDetail> { 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);
} }
...@@ -16,7 +16,7 @@ import java.util.Date; ...@@ -16,7 +16,7 @@ import java.util.Date;
public class CasLoginDetailServiceImpl extends ServiceImpl<CasLoginDetailMapper, CasLoginDetail> implements ICasLoginDetailService { public class CasLoginDetailServiceImpl extends ServiceImpl<CasLoginDetailMapper, CasLoginDetail> implements ICasLoginDetailService {
@Override @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() CasLoginDetail casLoginDetail = CasLoginDetail.builder()
.userId(sysUser.getUserId()) .userId(sysUser.getUserId())
.userName(sysUser.getUsername()) .userName(sysUser.getUsername())
...@@ -26,7 +26,10 @@ public class CasLoginDetailServiceImpl extends ServiceImpl<CasLoginDetailMapper, ...@@ -26,7 +26,10 @@ public class CasLoginDetailServiceImpl extends ServiceImpl<CasLoginDetailMapper,
.orgIdentify(sysUser.getOrgCode()) .orgIdentify(sysUser.getOrgCode())
.ip(ip) .ip(ip)
.loginTime(new Date()) .loginTime(new Date())
.loginType(loginType).build(); .loginType(loginType)
.browser(browser)
.os(os)
.build();
this.save(casLoginDetail); this.save(casLoginDetail);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment