Heim >Java >javaLernprogramm >Einführung in Anwendungsbeispiele für den Verifizierungscode in Kombination mit Springboot beim Anmelden

Einführung in Anwendungsbeispiele für den Verifizierungscode in Kombination mit Springboot beim Anmelden

零下一度
零下一度Original
2017-06-17 11:48:061794Durchsuche

In einer Webanwendung ist Bestätigungscode ein häufiges Element. Unabhängig davon, ob es sich um die Verhinderung von Robotern oder Crawlern handelt, werden im folgenden Artikel hauptsächlich die relevanten Informationen zum Anmeldebestätigungscode Kaptcha in Kombination mit der Verwendung von Spring Boot vorgestellt.

Vorwort

Wenn sich unser Benutzer anmeldet, werden wir aus Sicherheitsgründen eine Bestätigungscode-Funktion von Google hinzufügen Hier kommt Kaptcha zum Einsatz; spirngboot ist leichtgewichtig und unabhängig, was die Entwicklung von Spring-basierten Anwendungen besonders einfach macht. Es gibt viele Einführungen in Springboot im Internet, daher werde ich hier nicht auf Details eingehen.

Um auf den Punkt zurückzukommen: Lassen Sie uns über die Verwendung des Bestätigungscodes in Kombination mit Springboot beim Anmelden sprechen.

Das benötigte Jar-Paket Um Kaptcha einzuführen, verwende ich es hier. Was benötigt wird, ist 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>

, um das mit dem Paket gelieferte Servlet-Paket zu entfernen. Nach meinem persönlichen Verständnis ist Springboot eine leichte Mikroarchitektur, die mit Javaconfig und Annotationen erstellt wurde.

Das Folgende ist die Javaconfig von Kapcha


@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; 
 } 
}

Die Javaconfig von Katcha hier entspricht der Bean-Konfiguration in springmvc Das Folgende ist ein Beispiel für die obige Javaconfig-Springmvc-Bean, als Referenz


<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>

, unter dem die Attributparameter in der Konstruktormethode entsprechend festgelegt werden können Ihre eigenen Bedürfnisse.

Die Konfigurationsdatei wurde konfiguriert. Wie bekomme ich also Ihren eigenen QR-Code? Mein Verständnis ist das Konzept der Leinwand und generiert dann die entsprechende Leinwand mit dem generierten vierstelligen Bestätigungscode . Lassen Sie dann das Ergebnis ausschreiben.

Der Code lautet wie folgt:


@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; 
 }

Als obiger Code verwenden Sie den Bestätigungscode, wenn der Der Benutzer meldet sich an und der Captchacode wird zur Überprüfung der Einzigartigkeit verwendet. Nachdem ich damals darüber nachgedacht hatte, kam es mir zum Beispiel vor, den Captchacode einzugeben In der Sitzung gibt es dann einen Bestätigungscode und dann einen anderen. Der Benutzer meldet sich erneut an, und der vorherige Benutzer meldet sich immer noch an. Zu diesem Zeitpunkt treten eine Reihe von Problemen auf. Cookies und Redis werden hier verwendet, um die gleichzeitige Anmeldeüberprüfung von Benutzern durchzuführen.

Die Seite ist auch relativ einfach wie folgt zu verwenden:


<p style="float: left;"> 
  <i><img style="height:22px;" id="codeImg" alt="点击更换" title="点击更换" src="code/captcha-image" /></i> 
</p>

Wenn Sie sie ändern möchten , fügen Sie ein Klickereignis hinzu und löschen Sie dann die entsprechenden Cache-Daten in Redis oder legen Sie beim Abrufen des Bestätigungscodes den Lebenszyklus fest.

Das obige ist der detaillierte Inhalt vonEinführung in Anwendungsbeispiele für den Verifizierungscode in Kombination mit Springboot beim Anmelden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn