AJ-Captcha 增加验证码二次校验

This commit is contained in:
xingyu 2022-08-03 09:48:29 +08:00
parent 21ccd3cb04
commit e842d2e0ad
2 changed files with 24 additions and 10 deletions

View File

@ -33,6 +33,10 @@ public class AuthLoginReqVO {
@Length(min = 4, max = 16, message = "密码长度为 4-16 位") @Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password; private String password;
@ApiModelProperty(value = "验证码", required = true, example = "PfcH6mgr8tpXuMWFjvW6YVaqrswIuwmWI5dsVZSg7sGpWtDCUbHuDEXl3cFB1+VvCC/rAkSwK8Fad52FSuncVg==")
@NotEmpty(message = "验证码不能为空")
private String captchaVerification;
// ========== 绑定社交登录时需要传递如下参数 ========== // ========== 绑定社交登录时需要传递如下参数 ==========
@ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值") @ApiModelProperty(value = "社交平台的类型", required = true, example = "10", notes = "参见 SysUserSocialTypeEnum 枚举值")

View File

@ -21,6 +21,9 @@ import cn.iocoder.yudao.module.system.service.member.MemberService;
import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService; import cn.iocoder.yudao.module.system.service.oauth2.OAuth2TokenService;
import cn.iocoder.yudao.module.system.service.social.SocialUserService; import cn.iocoder.yudao.module.system.service.social.SocialUserService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.anji.captcha.model.common.ResponseModel;
import com.anji.captcha.model.vo.CaptchaVO;
import com.anji.captcha.service.CaptchaService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -51,10 +54,10 @@ public class AdminAuthServiceImpl implements AdminAuthService {
private SocialUserService socialUserService; private SocialUserService socialUserService;
@Resource @Resource
private MemberService memberService; private MemberService memberService;
@Resource @Resource
private Validator validator; private Validator validator;
@Resource
private CaptchaService captchaService;
@Resource @Resource
private SmsCodeApi smsCodeApi; private SmsCodeApi smsCodeApi;
@ -81,16 +84,23 @@ public class AdminAuthServiceImpl implements AdminAuthService {
@Override @Override
public AuthLoginRespVO login(AuthLoginReqVO reqVO) { public AuthLoginRespVO login(AuthLoginReqVO reqVO) {
// 使用账号密码进行登录 CaptchaVO captchaVO = new CaptchaVO();
AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword()); captchaVO.setCaptchaVerification(reqVO.getCaptchaVerification());
ResponseModel response = captchaService.verification(captchaVO);
if(response.isSuccess()){
// 使用账号密码进行登录
AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword());
// 如果 socialType 非空说明需要绑定社交用户 // 如果 socialType 非空说明需要绑定社交用户
if (reqVO.getSocialType() != null) { if (reqVO.getSocialType() != null) {
socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(), socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState())); reqVO.getSocialType(), reqVO.getSocialCode(), reqVO.getSocialState()));
}
// 创建 Token 令牌记录登录日志
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME);
}else{
throw exception(AUTH_LOGIN_CAPTCHA_CODE_ERROR);
} }
// 创建 Token 令牌记录登录日志
return createTokenAfterLoginSuccess(user.getId(), reqVO.getUsername(), LoginLogTypeEnum.LOGIN_USERNAME);
} }
@Override @Override