머리말
본점으로 돌아가서 로그인 시 springboot와 결합된 인증코드의 사용법에 대해 이야기해보자
kaptcha에 필요한 jar 패키지를 소개하는데, 저는 여기서 maven을 사용합니다<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> <exclusions> <exclusion> <artifactId>javax.servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> </exclusions> </dependency>제공되는 서블릿을 제거합니다 패키지 가방으로. 내 개인적인 이해에 따르면 springboot는 javaconfig 및 주석으로 구축된 경량 마이크로 아키텍처입니다.
@Configuration public class CaptchaConfig { @Bean(name="captchaProducer") public DefaultKaptcha getKaptchaBean(){ DefaultKaptcha defaultKaptcha=new DefaultKaptcha(); Properties properties=new Properties(); properties.setProperty("kaptcha.border", "yes"); properties.setProperty("kaptcha.border.color", "105,179,90"); properties.setProperty("kaptcha.textproducer.font.color", "blue"); properties.setProperty("kaptcha.image.width", "125"); properties.setProperty("kaptcha.image.height", "45"); 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; } }여기서 katcha의 javaconfig는 springmvc의 bean 구성과 동일합니다. 참고용으로 위 javaconfig에 대한 springmvc의 bean 예제를 보여드리겠습니다.
construction method
의 속성 매개변수는 필요에 따라 설정할 수 있습니다.이 구성되었으니 나만의 QR 코드를 어떻게 얻을 수 있을까요? 제가 이해한 것은 캔버스 개념이고, 생성된 4자리 인증 코드로 해당 캔버스를 생성한 다음 결과를 작성하는 것입니다.
코드는 다음과 같습니다.<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<prop key="kaptcha.border">yes</prop>
<prop key="kaptcha.border.color">105,179,90</prop>
<prop key="kaptcha.textproducer.font.color">blue</prop>
<prop key="kaptcha.image.width">125</prop>
<prop key="kaptcha.image.height">45</prop>
<prop key="kaptcha.textproducer.font.size">45</prop>
<prop key="kaptcha.session.key">code</prop>
<prop key="kaptcha.textproducer.char.length">4</prop>
<prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
위 코드처럼 사용자가 로그인할 때 인증코드와 cooike의 captchacode를 사용하여 고유성 인증을 하려고 처음에는 넣는 것을 고려했습니다. 생각해 보니 비과학적이라는 생각이 듭니다. 예를 들어 세션에 보안문자 코드가 있으면 나중에 다른 사용자가 다시 로그인하고 이전 사용자가 계속 로그인하고 있습니다. .이때 일련의 문제가 발생하게 됩니다. 여기서는 쿠키와 redis를 사용하여 사용자의 동시 로그인 확인을 처리합니다.
페이지는 다음과 같이 비교적 간단하게 사용할 수 있습니다.
@RequestMapping(value = "/captcha-image") public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception { response.setDateHeader("Expires", 0); response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); response.addHeader("Cache-Control", "post-check=0, pre-check=0"); response.setHeader("Pragma", "no-cache"); response.setContentType("image/jpeg"); String capText = captchaProducer.createText(); System.out.println("capText: " + capText); try { String uuid=UUIDUtils.getUUID32().trim().toString(); redisTemplate.opsForValue().set(uuid, capText,60*5,TimeUnit.SECONDS); Cookie cookie = new Cookie("captchaCode",uuid); response.addCookie(cookie); } catch (Exception e) { e.printStackTrace(); } BufferedImage bi = captchaProducer.createImage(capText); ServletOutputStream out = response.getOutputStream(); ImageIO.write(bi, "jpg", out); try { out.flush(); } finally { out.close(); } return null; }변경하려면 클릭 이벤트를 추가한 다음 redis에서 이전 해당 캐시 데이터를 지우거나 수명을 설정하세요. 인증 코드를 받을 때 주기입니다.
위 내용은 로그인 시 springboot와 결합된 인증코드 사용예 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!