Maison > Java > javaDidacticiel > Introduction aux exemples d'utilisation du code de vérification combiné avec springboot lors de la connexion

Introduction aux exemples d'utilisation du code de vérification combiné avec springboot lors de la connexion

零下一度
Libérer: 2017-06-17 11:48:06
original
1769 Les gens l'ont consulté

Dans une application Web, Le code de vérification est un élément commun. Qu'il s'agisse d'empêcher les robots ou les robots d'exploration, cela a un certain effet. L'article suivant présente principalement les informations pertinentes sur le code de vérification de connexion kaptcha combinées à l'utilisation du Spring Boot. Les amis dans le besoin peuvent s'y référer.

Avant-propos

Lorsque notre utilisateur se connectera, pour des raisons de sécurité, nous ajouterons une fonction de code de vérification de Google. kaptcha est utilisé ici ; spirngboot est léger et indépendant, ce qui rend le développement d'applications basées sur Spring particulièrement simple. Il existe de nombreuses introductions à Springboot sur Internet, je n'entrerai donc pas dans les détails ici.

Pour revenir au sujet, parlons de l'utilisation du code de vérification combiné avec springboot lors de la connexion.

Le package jar nécessaire pour présenter kaptcha, je l'utilise ici. Ce qu'il faut, c'est 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>
Copier après la connexion

pour supprimer le package de servlet fourni avec le package. D'après ma compréhension personnelle, springboot est une micro-architecture légère construite avec javaconfig et des annotations.

Ce qui suit est la configuration java de 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; 
 } 
}
Copier après la connexion

La configuration java de katcha ici est équivalente à la configuration du bean dans springmvc. est un exemple de bean javaconfig springmvc ci-dessus, pour référence


<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>
Copier après la connexion

parmi lesquels les paramètres d'attribut dans la méthode constructeur peuvent être définis en fonction de vos propres besoins.

Le fichier de configuration a été configuré, alors comment obtenir votre propre code QR. Ma compréhension est le concept de canevas, puis générer le canevas correspondant à partir du code de vérification à quatre chiffres généré ? . Ensuite, laissez le résultat être écrit.

Le code est le suivant :


@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; 
 }
Copier après la connexion

Comme le code ci-dessus, utilisez le code de vérification lorsque le L'utilisateur se connecte et le captchacode dans cooike est utilisé pour vérifier l'unicité. Au début, j'ai envisagé de le mettre dans la session. Après y avoir réfléchi à l'époque, j'ai senti que ce n'était pas scientifique. la session, il y aurait alors un code de vérification, puis un autre. L'utilisateur se reconnecte et l'utilisateur précédent se connecte toujours. À ce moment, une série de problèmes se produiront. Les cookies et Redis sont utilisés ici pour gérer la vérification simultanée de la connexion des utilisateurs.

La page est également relativement simple à utiliser comme suit :


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

Si vous souhaitez la remplacer , ajoutez un événement de clic, puis effacez les données du cache correspondantes dans redis ou lors de l'obtention du code de vérification, définissez le cycle de vie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal