做毕设的网站万在线的crm系统软件
我们使用Hutool工具类
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 60, 4, 25);来生成图形验证码,lineCaptcha.getCode方法可以拿到生成的验证码,放入redis中,登录的时候取出来判断下是否一致
@RestController
@RequestMapping("/public")
@Api(tags = "开放接口")
public class PublicController extends BaseController {@Autowiredprivate UserService userService;@Autowiredprivate RedisTemplate redisTemplate;@PostMapping("systemLogin")@ApiOperation("后台登录")public Result<UserDto> systemLogin(@RequestBody @Validated LoginDto loginDto, HttpServletRequest request) {//校验验证码String key = CAPTCHA_IMAGE + loginDto.getUsername();redisTemplate.delete(key);String validCode = (String) redisTemplate.opsForValue().get(key);if (!Objects.equals(validCode, loginDto.getValidCode())) {return resultFail("验证码不正确");}// 进行登录操作return resultOk(userService.login(loginDto.getUsername(), loginDto.getPassword(), UserToken.PLATFORM_WEB,ClientUtil.getIp(request), false, false));}@ApiOperation(value = "获取图形验证码")@RequestMapping(value = "getCaptcha", method = RequestMethod.GET)public void getCaptcha(String username, HttpServletResponse response) {LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 60, 4, 25);response.setContentType("image/jpeg");response.setHeader("Pragma", "No-cache");try {lineCaptcha.write(response.getOutputStream());String code = lineCaptcha.getCode();redisTemplate.opsForValue().set(CAPTCHA_IMAGE + username, code, 30, TimeUnit.MINUTES);response.getOutputStream().close();} catch (IOException e) {e.printStackTrace();}}
}