refactor: 把登录逻辑移到admin 因为不同项目的登录 可能是不一样的
This commit is contained in:
parent
37f2b63038
commit
fcb88e5a94
@ -15,12 +15,12 @@ import com.agileboot.infrastructure.annotations.ratelimit.RateLimit;
|
||||
import com.agileboot.infrastructure.annotations.ratelimit.RateLimit.CacheType;
|
||||
import com.agileboot.infrastructure.annotations.ratelimit.RateLimit.LimitType;
|
||||
import com.agileboot.infrastructure.security.AuthenticationUtils;
|
||||
import com.agileboot.infrastructure.web.domain.login.CaptchaDTO;
|
||||
import com.agileboot.infrastructure.web.domain.login.ConfigDTO;
|
||||
import com.agileboot.infrastructure.web.domain.login.LoginDTO;
|
||||
import com.agileboot.admin.customize.service.login.dto.CaptchaDTO;
|
||||
import com.agileboot.admin.customize.service.login.dto.ConfigDTO;
|
||||
import com.agileboot.admin.customize.service.login.command.LoginCommand;
|
||||
import com.agileboot.infrastructure.web.domain.login.LoginUser;
|
||||
import com.agileboot.infrastructure.annotations.ratelimit.RateLimitKey;
|
||||
import com.agileboot.infrastructure.web.service.LoginService;
|
||||
import com.agileboot.admin.customize.service.login.LoginService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import java.util.List;
|
||||
@ -92,14 +92,14 @@ public class LoginController {
|
||||
/**
|
||||
* 登录方法
|
||||
*
|
||||
* @param loginDTO 登录信息
|
||||
* @param loginCommand 登录信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Operation(summary = "登录")
|
||||
@PostMapping("/login")
|
||||
public ResponseDTO<TokenDTO> login(@RequestBody LoginDTO loginDTO) {
|
||||
public ResponseDTO<TokenDTO> login(@RequestBody LoginCommand loginCommand) {
|
||||
// 生成令牌
|
||||
String token = loginService.login(loginDTO);
|
||||
String token = loginService.login(loginCommand);
|
||||
LoginUser loginUser = AuthenticationUtils.getLoginUser();
|
||||
CurrentLoginUserDTO currentUserDTO = userApplicationService.getLoginUserInfo(loginUser);
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.agileboot.infrastructure.filter;
|
||||
package com.agileboot.admin.customize.config;
|
||||
|
||||
import com.agileboot.infrastructure.security.AuthenticationUtils;
|
||||
import com.agileboot.infrastructure.web.domain.login.LoginUser;
|
||||
@ -1,12 +1,12 @@
|
||||
package com.agileboot.infrastructure.config;
|
||||
package com.agileboot.admin.customize.config;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.agileboot.admin.customize.service.login.LoginService;
|
||||
import com.agileboot.common.core.dto.ResponseDTO;
|
||||
import com.agileboot.common.exception.ApiException;
|
||||
import com.agileboot.common.exception.error.ErrorCode.Client;
|
||||
import com.agileboot.common.utils.ServletHolderUtil;
|
||||
import com.agileboot.infrastructure.cache.redis.RedisCacheService;
|
||||
import com.agileboot.infrastructure.filter.JwtAuthenticationTokenFilter;
|
||||
import com.agileboot.infrastructure.thread.AsyncTaskFactory;
|
||||
import com.agileboot.infrastructure.thread.ThreadPoolManager;
|
||||
import com.agileboot.infrastructure.web.domain.login.LoginUser;
|
||||
@ -39,7 +39,7 @@ import org.springframework.web.filter.CorsFilter;
|
||||
* @see this#unauthorizedHandler() 用于用户未授权或登录失败处理
|
||||
* @see this#logOutSuccessHandler 用于退出登录成功后的逻辑
|
||||
* @see JwtAuthenticationTokenFilter#doFilter token的校验和刷新
|
||||
* @see com.agileboot.infrastructure.web.service.LoginService#login 登录逻辑
|
||||
* @see LoginService#login 登录逻辑
|
||||
* @author valarchie
|
||||
*/
|
||||
@Configuration
|
||||
@ -1,4 +1,4 @@
|
||||
package com.agileboot.infrastructure.web.service;
|
||||
package com.agileboot.admin.customize.service.login;
|
||||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
@ -22,10 +22,11 @@ import com.agileboot.infrastructure.cache.map.MapCache;
|
||||
import com.agileboot.infrastructure.cache.redis.RedisCacheService;
|
||||
import com.agileboot.infrastructure.thread.AsyncTaskFactory;
|
||||
import com.agileboot.infrastructure.thread.ThreadPoolManager;
|
||||
import com.agileboot.infrastructure.web.domain.login.CaptchaDTO;
|
||||
import com.agileboot.infrastructure.web.domain.login.ConfigDTO;
|
||||
import com.agileboot.infrastructure.web.domain.login.LoginDTO;
|
||||
import com.agileboot.admin.customize.service.login.dto.CaptchaDTO;
|
||||
import com.agileboot.admin.customize.service.login.dto.ConfigDTO;
|
||||
import com.agileboot.admin.customize.service.login.command.LoginCommand;
|
||||
import com.agileboot.infrastructure.web.domain.login.LoginUser;
|
||||
import com.agileboot.infrastructure.web.service.TokenService;
|
||||
import com.agileboot.orm.common.enums.ConfigKeyEnum;
|
||||
import com.agileboot.orm.common.enums.LoginStatusEnum;
|
||||
import com.agileboot.orm.system.entity.SysUserEntity;
|
||||
@ -75,30 +76,30 @@ public class LoginService {
|
||||
/**
|
||||
* 登录验证
|
||||
*
|
||||
* @param loginDTO 登录参数
|
||||
* @param loginCommand 登录参数
|
||||
* @return 结果
|
||||
*/
|
||||
public String login(LoginDTO loginDTO) {
|
||||
public String login(LoginCommand loginCommand) {
|
||||
// 验证码开关
|
||||
if (isCaptchaOn()) {
|
||||
validateCaptcha(loginDTO.getUsername(), loginDTO.getCaptchaCode(), loginDTO.getCaptchaCodeKey());
|
||||
validateCaptcha(loginCommand.getUsername(), loginCommand.getCaptchaCode(), loginCommand.getCaptchaCodeKey());
|
||||
}
|
||||
// 用户验证
|
||||
Authentication authentication;
|
||||
String decryptPassword = decryptPassword(loginDTO.getPassword());
|
||||
String decryptPassword = decryptPassword(loginCommand.getPassword());
|
||||
try {
|
||||
// 该方法会去调用UserDetailsServiceImpl#loadUserByUsername 校验用户名和密码 认证鉴权
|
||||
authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(
|
||||
loginDTO.getUsername(), decryptPassword));
|
||||
loginCommand.getUsername(), decryptPassword));
|
||||
} catch (BadCredentialsException e) {
|
||||
ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginDTO.getUsername(), LoginStatusEnum.LOGIN_FAIL,
|
||||
ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginCommand.getUsername(), LoginStatusEnum.LOGIN_FAIL,
|
||||
MessageUtils.message("Business.LOGIN_WRONG_USER_PASSWORD")));
|
||||
throw new ApiException(e, ErrorCode.Business.LOGIN_WRONG_USER_PASSWORD);
|
||||
} catch (AuthenticationException e) {
|
||||
ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginDTO.getUsername(), LoginStatusEnum.LOGIN_FAIL, e.getMessage()));
|
||||
ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginCommand.getUsername(), LoginStatusEnum.LOGIN_FAIL, e.getMessage()));
|
||||
throw new ApiException(e, ErrorCode.Business.LOGIN_ERROR, e.getMessage());
|
||||
} catch (Exception e) {
|
||||
ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginDTO.getUsername(), LoginStatusEnum.LOGIN_FAIL, e.getMessage()));
|
||||
ThreadPoolManager.execute(AsyncTaskFactory.loginInfoTask(loginCommand.getUsername(), LoginStatusEnum.LOGIN_FAIL, e.getMessage()));
|
||||
throw new ApiException(e, Business.LOGIN_ERROR, e.getMessage());
|
||||
}
|
||||
// 把当前登录用户 放入上下文中
|
||||
@ -1,4 +1,4 @@
|
||||
package com.agileboot.infrastructure.web.domain.login;
|
||||
package com.agileboot.admin.customize.service.login.command;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -8,7 +8,7 @@ import lombok.Data;
|
||||
* @author valarchie
|
||||
*/
|
||||
@Data
|
||||
public class LoginDTO {
|
||||
public class LoginCommand {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
@ -1,4 +1,4 @@
|
||||
package com.agileboot.infrastructure.web.domain.login;
|
||||
package com.agileboot.admin.customize.service.login.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.agileboot.infrastructure.web.domain.login;
|
||||
package com.agileboot.admin.customize.service.login.dto;
|
||||
|
||||
import com.agileboot.orm.common.dto.DictionaryData;
|
||||
import java.util.List;
|
||||
Loading…
x
Reference in New Issue
Block a user