wangwei vor 6 Jahren
Ursprung
Commit
13cf9461b0

+ 7 - 1
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/AuthController.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.examcloud.core.basic.api.controller;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,7 +65,11 @@ public class AuthController extends ControllerSupport {
 
 	@ApiOperation(value = "登入", notes = "")
 	@PostMapping("login")
-	public User login(@RequestBody LoginInfo loginInfo) {
+	public User login(@RequestBody LoginInfo loginInfo, HttpServletRequest request) {
+		String clientIp = request.getHeader("x-forwarded-for");
+		if (StringUtils.isNotBlank(clientIp)) {
+			loginInfo.setClientIp(clientIp);
+		}
 		User user = authService.login(loginInfo);
 		return user;
 	}

+ 13 - 0
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/bean/LoginInfo.java

@@ -37,6 +37,11 @@ public class LoginInfo implements JsonSerializable {
 	 */
 	private String password;
 
+	/**
+	 * 客户端IP
+	 */
+	private String clientIp;
+
 	public Long getRootOrgId() {
 		return rootOrgId;
 	}
@@ -77,4 +82,12 @@ public class LoginInfo implements JsonSerializable {
 		this.password = password;
 	}
 
+	public String getClientIp() {
+		return clientIp;
+	}
+
+	public void setClientIp(String clientIp) {
+		this.clientIp = clientIp;
+	}
+
 }

+ 4 - 1
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/AuthServiceImpl.java

@@ -181,13 +181,16 @@ public class AuthServiceImpl implements AuthService {
 			user.setOrgName(org.getName());
 		}
 
+		boolean isLcUser = isLcUser(user);
+
 		// 学习中心禁用时,学习中心用户禁止登录
-		if (1 == user.getRoleList().size() && isLcUser(user)) {
+		if (1 == user.getRoleList().size() && isLcUser) {
 			if (null != org && !org.getEnable()) {
 				throw new StatusException("B-001008", "学习中心被禁用");
 			}
 		}
 
+		user.setClientIp(loginInfo.getClientIp());
 		setSession(user);
 
 		return user;