Commit bdcc8034 authored by suntao's avatar suntao

ldap 登录

parent d3c6decd
......@@ -35,7 +35,7 @@ public class LogController {
*/
@PostMapping("/login")
public Result<String> login(@RequestBody @Valid LoginFormModel loginFormModel) {
Tuple<ApplicationStatus, String> tuple = this.loginService.login(loginFormModel.getUsername(), loginFormModel.getPassword());
Tuple<ApplicationStatus, String> tuple = this.loginService.login(loginFormModel);
if (ApplicationStatus.SUCCESS.equals(tuple.getKey())) {
return new Result<>(tuple.getKey(), tuple.getValue());
} else {
......
......@@ -21,4 +21,9 @@ public class LoginFormModel {
@NotEmpty(message = "无效的密码")
private String password;
/**
* 登录方式
*/
private LoginMethodModel tabName;
}
package cn.quantgroup.cashloanflowboss.api.login.model;
public enum LoginMethodModel {
NORMAL,// 正常登录
LDAP;// ldap登录
}
......@@ -48,9 +48,9 @@ public class LdapAuthentication implements IldapAuthentication, CommandLineRunne
try {
ctx = new InitialLdapContext(env, connCtls);
} catch (AuthenticationException e) {
log.error("验证失败:{}", ExceptionUtils.getStackTrace(e));
log.error("初始化失败:{}", ExceptionUtils.getStackTrace(e));
} catch (Exception e) {
e.printStackTrace();
log.error("初始化失败:{}", ExceptionUtils.getStackTrace(e));
}
}
......
package cn.quantgroup.cashloanflowboss.api.login.service;
import cn.quantgroup.cashloanflowboss.api.login.model.LoginFormModel;
import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
......@@ -12,7 +13,7 @@ import java.util.Map;
* @author: suntao
*/
public interface LoginService {
Tuple<ApplicationStatus, String> login(String username, String password);
Tuple<ApplicationStatus, String> login(LoginFormModel loginFormModel);
boolean logout();
......
......@@ -2,6 +2,8 @@ package cn.quantgroup.cashloanflowboss.api.login.service;
import cn.quantgroup.cashloanflowboss.api.login.auth.ApiAuthService;
import cn.quantgroup.cashloanflowboss.api.login.auth.model.LoginUser;
import cn.quantgroup.cashloanflowboss.api.login.model.LoginFormModel;
import cn.quantgroup.cashloanflowboss.api.login.model.LoginMethodModel;
import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import cn.quantgroup.cashloanflowboss.api.role.entity.Role;
import cn.quantgroup.cashloanflowboss.api.role.repository.RoleRepository;
......@@ -60,39 +62,25 @@ public class LoginServiceImpl implements LoginService {
/**
* 登入
*
* @param username 用户名
* @param password 密码(明文)
* @param loginFormModel
* loginFormModel.password 密码(明文)
* @return
*/
@Override
public Tuple<ApplicationStatus, String> login(String username, String password) {
public Tuple<ApplicationStatus, String> login(LoginFormModel loginFormModel) {
String username = loginFormModel.getUsername();
String password = loginFormModel.getPassword();
String remoteIP = IpUtil.getRemoteIP(request);
Long increment = redisTemplate.opsForValue().increment("user:login:ip:" + remoteIP, 1);
if (increment > 1000) {
if (increment > 5000) {
log.info("登陆失败,username={}, msg={}", username, "md有人在搞事情");
return new Tuple<>(ApplicationStatus.REENTRY_LOCK_EXCEPTION, "");
}
User user = this.userService.getUser(username);
if (user == null) {
// 如果没有user 查询量星球
// JsonResult<LoginUser> result = apiAuthService.autoLogin(username + "@quantgroup.cn", password, "KA_MA");
// if (!result.isSuccess() || result.getData() == null) {
// log.info("登陆失败,username={}, msg={}", username, result.getMessage());
// return new Tuple<>(ApplicationStatus.USERNAME_OR_PASSWORD_ERROR, "");
// } else {
// LoginUser data = result.getData();
// Role role = roleRepository.getByName("量化派操作员");
// user = new User();
// user.setId(-1L);
// user.setUsername(username);
// user.setNickname(data.getName());
// user.setPassword(MD5Tools.md5(password));
// user.setRank(UserRank.OPERATOR);
// user.setRole(role);
// user.setStatus(UserStatus.ENABLED);
// }
User user;
LoginMethodModel loginMethodModel = loginFormModel.getTabName();
if (loginMethodModel == null || LoginMethodModel.NORMAL.equals(loginMethodModel)) {
user = this.userService.getUser(username);
} else {
boolean b = ldapAuthentication.authenricate(username, password);
if (b) {
LoginUser data = new LoginUser();
......@@ -100,7 +88,7 @@ public class LoginServiceImpl implements LoginService {
user = new User();
user.setId(-1L);
user.setUsername(username);
user.setNickname(data.getName());
user.setNickname(username);
user.setPassword(MD5Tools.md5(password));
user.setRank(UserRank.OPERATOR);
user.setRole(role);
......@@ -109,7 +97,10 @@ public class LoginServiceImpl implements LoginService {
log.info("登陆失败,username={}, msg={}", username, "ldap失败");
return new Tuple<>(ApplicationStatus.USERNAME_OR_PASSWORD_ERROR, "");
}
}
if (user == null) {
log.info("登陆失败,username={}, msg={}", username, "user不存在");
return new Tuple<>(ApplicationStatus.USERNAME_OR_PASSWORD_ERROR, "");
}
// 检查用户是否被禁用
if (UserStatus.DISABLED.equals(user.getStatus())) {
......
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