|
|
@@ -2,38 +2,58 @@ package com.ctsi.Auth.web;
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
import com.ctsi.Auth.entity.UserForm;
|
|
|
+import com.ctsi.Enum.ErrorCodeEnum;
|
|
|
import com.ctsi.System.SysMenu.entity.PO.SysMenuSearchPO;
|
|
|
import com.ctsi.System.SysMenu.service.SysMenuService;
|
|
|
import com.ctsi.System.SysUser.entity.SysUser;
|
|
|
import com.ctsi.System.SysUser.service.SysUserService;
|
|
|
import com.ctsi.utils.ApiResult;
|
|
|
+import com.ctsi.utils.CaptchaUtil;
|
|
|
import com.ctsi.utils.PasswordEncoderUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.servlet.http.HttpSession;
|
|
|
+import java.io.IOException;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Api(tags = "授权")
|
|
|
@RestController
|
|
|
@RequestMapping(value = "/api/system")
|
|
|
public class login {
|
|
|
+ @Value("${frame.captcha-type}")
|
|
|
+ private Boolean captchaType;
|
|
|
@Resource
|
|
|
private SysUserService sysUserService;
|
|
|
@Resource
|
|
|
private SysMenuService sysMenuService;
|
|
|
@ApiOperation("登录")
|
|
|
@PostMapping(value = "/login",name = "登录")
|
|
|
- public ApiResult auth(@RequestBody UserForm userForm){
|
|
|
- SysUser User = sysUserService.queryByUserName(userForm.getUserName());
|
|
|
- if(User == null){
|
|
|
- return ApiResult.failure("用户不存在",null);
|
|
|
- }
|
|
|
- if (!PasswordEncoderUtil.checkPassword(userForm.getPassword(),User.getPassword())){
|
|
|
- return ApiResult.failure("密码错误",null);
|
|
|
+ public ApiResult auth(@RequestBody UserForm userForm, HttpServletRequest request){
|
|
|
+ // 验证码校验是否开启
|
|
|
+ if (captchaType) {
|
|
|
+ // 从 Session 中获取之前生成的验证码
|
|
|
+ HttpSession session = request.getSession();
|
|
|
+ String storedCaptcha = (String) session.getAttribute("captcha");
|
|
|
+ if (storedCaptcha == null)
|
|
|
+ return ApiResult.result(ErrorCodeEnum.CAPTCHA_INVALID);
|
|
|
+ // 从 Session 中删除验证码
|
|
|
+ session.removeAttribute("captcha");
|
|
|
+ // 比较传入的验证码和 Session 中的验证码是否相等
|
|
|
+ if (!storedCaptcha.equalsIgnoreCase(userForm.getCaptcha()))
|
|
|
+ return ApiResult.result(ErrorCodeEnum.CAPTCHA_INVALID);
|
|
|
}
|
|
|
- StpUtil.login(User.getId());
|
|
|
+ SysUser User = sysUserService.queryByUserName(userForm.getUserName());
|
|
|
+ if(User == null)
|
|
|
+ return ApiResult.result(ErrorCodeEnum.USER_NOT_FOUND);
|
|
|
+ if (!PasswordEncoderUtil.checkPassword(userForm.getPassword(),User.getPassword()))
|
|
|
+ return ApiResult.result(ErrorCodeEnum.PASSWORD_INVALID);
|
|
|
+ StpUtil.login(User.getId(),userForm.getRememberMe());
|
|
|
return ApiResult.success("登录成功");
|
|
|
}
|
|
|
|
|
|
@@ -54,4 +74,18 @@ public class login {
|
|
|
public ApiResult<List<SysMenuSearchPO>> getMenuTree(){
|
|
|
return ApiResult.success(sysMenuService.getMenuTree(StpUtil.getLoginIdAsLong()));
|
|
|
}
|
|
|
+
|
|
|
+ @ApiOperation("获取验证码")
|
|
|
+ @GetMapping("/captcha")
|
|
|
+ public void getCaptcha(HttpServletResponse response, HttpSession session) {
|
|
|
+ try {
|
|
|
+ byte[] captchaImage = CaptchaUtil.generateCaptcha(session);
|
|
|
+ response.setContentType("image/png");
|
|
|
+ response.getOutputStream().write(captchaImage);
|
|
|
+ response.getOutputStream().flush();
|
|
|
+ } catch (IOException e) {
|
|
|
+ // Handle exception
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|