Skip to content

Commit 59cac7e

Browse files
committed
修复添加管理员密码是明文的问题, 修复登录后登录状态没有更新的问题,增加 ip 工具类
1 parent 964c48e commit 59cac7e

File tree

3 files changed

+59
-3
lines changed

3 files changed

+59
-3
lines changed

admin-api/src/main/java/com/lmxdawn/api/admin/controller/auth/AuthAdminController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ public ResultVO save(@RequestBody @Valid AuthAdminSaveForm authAdminSaveForm,
135135

136136
AuthAdmin authAdmin = new AuthAdmin();
137137
BeanUtils.copyProperties(authAdminSaveForm, authAdmin);
138+
139+
if (authAdmin.getPassword() != null) {
140+
authAdmin.setPassword(PasswordUtils.authAdminPwd(authAdmin.getPassword()));
141+
}
138142

139143
boolean b = authAdminService.insertAuthAdmin(authAdmin);
140144

admin-api/src/main/java/com/lmxdawn/api/admin/controller/auth/LoginController.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.lmxdawn.api.admin.vo.auth.LoginUserInfoVO;
1313
import com.lmxdawn.api.common.constant.RedisConstant;
1414
import com.lmxdawn.api.common.utils.CacheUtils;
15+
import com.lmxdawn.api.common.utils.IpUtils;
1516
import com.lmxdawn.api.common.utils.JwtUtils;
1617
import com.lmxdawn.api.common.utils.ResultVOUtils;
1718
import com.lmxdawn.api.admin.vo.ResultVO;
@@ -47,7 +48,8 @@ public class LoginController {
4748
*/
4849
@PostMapping(value = "/admin/auth/login/index")
4950
public ResultVO index(@RequestBody @Valid LoginForm loginForm,
50-
BindingResult bindingResult) {
51+
BindingResult bindingResult,
52+
HttpServletRequest request) {
5153
if (bindingResult.hasErrors()) {
5254
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
5355
}
@@ -60,6 +62,13 @@ public ResultVO index(@RequestBody @Valid LoginForm loginForm,
6062
if (!PasswordUtils.authAdminPwd(loginForm.getPwd()).equals(authAdmin.getPassword())) {
6163
throw new JsonException(ResultEnum.DATA_NOT, "用户名或密码错误");
6264
}
65+
66+
// 更新登录状态
67+
AuthAdmin authAdminUp = new AuthAdmin();
68+
authAdminUp.setId(authAdmin.getId());
69+
authAdminUp.setLastLoginTime(new Date());
70+
authAdminUp.setLastLoginIp(IpUtils.getIpAddr(request));
71+
authAdminService.updateAuthAdmin(authAdminUp);
6372

6473
// 登录成功后获取权限,这里面会设置到缓存
6574
authLoginService.listRuleByAdminId(authAdmin.getId());
@@ -100,7 +109,6 @@ public ResultVO userInfo(HttpServletRequest request) {
100109
* 登出
101110
* @return
102111
*/
103-
@AuthRuleAnnotation("")
104112
@PostMapping("/admin/auth/login/out")
105113
public ResultVO out(){
106114
return ResultVOUtils.success();
@@ -110,7 +118,7 @@ public ResultVO out(){
110118
* 修改密码
111119
* @return
112120
*/
113-
@AuthRuleAnnotation("")
121+
@AuthRuleAnnotation("") // 需要登录验证,但是不需要权限验证时,value 值填空字符串
114122
@PostMapping("/admin/auth/login/password")
115123
public ResultVO password(@RequestBody @Valid UpdatePasswordForm updatePasswordForm,
116124
BindingResult bindingResult) {
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.lmxdawn.api.common.utils;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import java.net.InetAddress;
5+
6+
public class IpUtils {
7+
8+
/**
9+
* 获取客户端IP地址
10+
*
11+
* @param request
12+
* @return
13+
*/
14+
public static String getIpAddr(HttpServletRequest request) {
15+
String ip = request.getHeader("x-forwarded-for");
16+
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
17+
ip = request.getHeader("Proxy-Client-IP");
18+
}
19+
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
20+
ip = request.getHeader("WL-Proxy-Client-IP");
21+
}
22+
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
23+
ip = request.getRemoteAddr();
24+
if (ip.equals("127.0.0.1")) {
25+
//根据网卡取本机配置的IP
26+
InetAddress inet = null;
27+
try {
28+
inet = InetAddress.getLocalHost();
29+
ip = inet.getHostAddress();
30+
} catch (Exception e) {
31+
e.printStackTrace();
32+
}
33+
}
34+
}
35+
// 多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
36+
if (ip != null && ip.length() > 15) {
37+
if (ip.indexOf(",") > 0) {
38+
ip = ip.substring(0, ip.indexOf(","));
39+
}
40+
}
41+
return ip;
42+
}
43+
44+
}

0 commit comments

Comments
 (0)