vue+springboot 로그 인 인증 코드 구현
효과 도 를 먼저 보다
login 페이지 에 인증 코드 html 추가
백 엔 드 pom 파일 에 kaptcha 의존 도 를 추가 합 니 다.
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
KaptchaConfig 도구 클래스 만 들 기
package com.brilliance.module.system.controller.util;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class KaptchaConfig {
@Bean
public DefaultKaptcha getDefaultKaptcha() {
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
Properties properties = new Properties();
//
properties.setProperty("kaptcha.image.width", "180");
//
properties.setProperty("kaptcha.image.height", "50");
//
properties.setProperty("kaptcha.border", "yes");
//
properties.setProperty("kaptcha.border.color", "105,179,90");
//
properties.setProperty("kaptcha.textproducer.font.color", "blue");
//
properties.setProperty("kaptcha.textproducer.font.size", "40");
// session key
properties.setProperty("kaptcha.session.key", "code");
//
properties.setProperty("kaptcha.textproducer.char.length", "4");
//
properties.setProperty("kaptcha.textproducer.font.names", " , , ");
Config config = new Config(properties);
defaultKaptcha.setConfig(config);
return defaultKaptcha;
}
}
Controller 에서 생 성 된 인증 코드 는 redis 에 저장 되 어 있 으 며,나중에 검사 할 때 사용 합 니 다(redis 의 설정 및 자체 바 이 두 에 의존 합 니 다).
@RestController
@RequestMapping("/api/user")
@Api(tags = " ")
public class SysUserController extends AbstractController{
@Autowired
private SysUserService sysUserService;
@Autowired
private DefaultKaptcha defaultKaptcha;
@Autowired
RedisTemplate redisTemplate;
@GetMapping("/createImageCode")
public void createImageCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setHeader("Cache-Control", "no-store, no-cache");
response.setContentType("image/jpeg");
//
String text = defaultKaptcha.createText();
//
BufferedImage image = defaultKaptcha.createImage(text);
// redis , 60
redisTemplate.opsForValue().set("imageCode",text,60, TimeUnit.SECONDS);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpg", out);
out.flush();
out.close();
}
생 성 후 로그 인 인터페이스 에 인증 코드 를 입력 하려 면 입력 이 정확 한 지 확인 해 야 합 니 다.로그 인 단추 에 요청 판단 을 한 번 추가 하여 입력 한 인증 코드 가 정확 한 지 검증 하고 반환 값 에 따라 오류 정 보 를 알려 줍 니 다.
@PostMapping("/compareCode")
public RESULT compareCode(@RequestBody String verificationCode) {
if(!redisTemplate.hasKey("imageCode")) {
return RESULT.error(500," ");
}
String code = redisTemplate.opsForValue().get("imageCode").toString();
if(StringUtils.equals(verificationCode,code)) {
return RESULT.ok();
} else {
return RESULT.error(500," ");
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.