Rumah Java javaTutorial 登陆时验证码结合springboot的用法实例介绍

登陆时验证码结合springboot的用法实例介绍

Jun 17, 2017 am 11:48 AM
springboot penggunaan Log masuk menggabungkan mengesahkan

在一个web应用中验证码是一个常见的元素。不管是防止机器人还是爬虫都有一定的作用,下面这篇文章主要给大家介绍了登陆验证码kaptcha结合spring boot用法的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

在我们用户登录的时候,为了安全性考虑,会增加验证码的功能,这里采用的是google的kaptcha;spirngboot是轻便,独立,使得基于spring的应用开发变得特别简单。网上有很多介绍springboot的介绍,这里不多说。

言归正抓,讲下登陆时验证码结合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>
Salin selepas log masuk

去除包中自带的servlet包。在我个人的理解中springboot就是javaconfig和注解搭建起来的轻型的微架构。

下面是kapcha的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; 
 } 
}
Salin selepas log masuk

这里的的katcha的javaconfig相当于springmvc中的bean配置,下面给是一个针对上面javaconfig的springmvc的bean示例,供参考


<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>
Salin selepas log masuk

其中构造方法中的属性参数可以根据自己的需求来设置。

配置文件已经配好,那么如何获取自己的二维码呢,我的理解是画布的概念,然后将生成的四位的验证码生成对应的画布,然后让结果write出去。

代码如下:


@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; 
 }
Salin selepas log masuk

如上面的代码,在用户登录的时候使用验证码以及cooike中的captchacode来实现唯一性验证,开始的时候我考虑到放到session中,当时想了下,感觉这不科学啊,比如讲captchacode放到session中,这时候验证码是一个,后来另一个用户再登陆,前一个用户还在登陆中,这时候会出现一系列的问题。这里使用cookie和redis,来应对用户的并发登陆验证。

页面使用也比较简单如下:


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

更换的话加一个click事件,然后清空以前在redis中对应的缓存数据;或者在获取验证码的时候,设置生存周期。

Atas ialah kandungan terperinci 登陆时验证码结合springboot的用法实例介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Log masuk rangkaian PlayStation gagal, tetapi sambungan internet berjaya Log masuk rangkaian PlayStation gagal, tetapi sambungan internet berjaya Feb 19, 2024 pm 11:33 PM

Sesetengah pemain mengalami isu pelik pada PS4 atau PS5 semasa pelancaran. Sebagai contoh, ini boleh menyebabkan kesusahan apabila log masuk Rangkaian PlayStation mereka gagal, tetapi sambungan internet mereka baik. Anda mungkin menghadapi ralat semasa memasukkan maklumat log masuk anda dan mungkin tidak dapat menyertai sembang PSparty. Jika anda menghadapi masalah yang sama, panduan ini boleh membantu anda menyelesaikannya. Di sebelah PlayStationNetworkSign-in, anda akan melihat mesej ralat 'AnErrorHaveAreAre' dan ia akan berkata 'Failure'. Parameter lain seperti mendapatkan alamat IP, sambungan internet dan kelajuan sambungan telah berjaya. Jadi, apa yang boleh menjadi masalah di sini? Saya akan beri awak kerja

Betulkan AADSTS7000112, Aplikasi dilumpuhkan ralat log masuk akaun Microsoft Betulkan AADSTS7000112, Aplikasi dilumpuhkan ralat log masuk akaun Microsoft Feb 19, 2024 pm 06:27 PM

Ralat AADSTS7000112 mungkin menghalang anda daripada log masuk ke apl menggunakan akaun Microsoft anda, menyebabkan anda mengalami kesulitan. Artikel ini akan memberi anda penyelesaian untuk membantu anda menyelesaikan isu ini dan memulihkan pengalaman log masuk biasa. Log masuk: Maaf, anda menghadapi masalah log masuk. AADSTS7000112: Aplikasi dilumpuhkan. Nasib baik, anda boleh membetulkan ralat dengan mengikuti beberapa cadangan mudah. Apakah kod ralat AADSTS7000112? Kod ralat AADSTS7000112 menunjukkan masalah dengan sambungan ke Azure Active Directory Microsoft. Biasanya, ini mungkin disebabkan oleh aplikasi Microsoft yang cuba log masuk disekat.

Bagaimana untuk mengesahkan tandatangan dalam PDF Bagaimana untuk mengesahkan tandatangan dalam PDF Feb 18, 2024 pm 05:33 PM

Kami biasanya menerima fail PDF daripada kerajaan atau agensi lain, sesetengahnya dengan tandatangan digital. Selepas mengesahkan tandatangan, kami melihat mesej SignatureValid dan tanda semak hijau. Sekiranya tandatangan tidak disahkan, kesahihannya tidak diketahui. Mengesahkan tandatangan adalah penting, mari lihat cara melakukannya dalam PDF. Cara Mengesahkan Tandatangan dalam PDF Mengesahkan tandatangan dalam format PDF menjadikannya lebih boleh dipercayai dan dokumen lebih cenderung untuk diterima. Anda boleh mengesahkan tandatangan dalam dokumen PDF dengan cara berikut. Buka PDF dalam Adobe Reader Klik kanan tandatangan dan pilih Show Signature Properties Klik butang Tunjukkan Sijil Penandatangan Tambah tandatangan pada senarai Sijil Dipercayai daripada tab Amanah Klik Sahkan Tandatangan untuk melengkapkan pengesahan Biarkan

Kaedah terperinci untuk menyahsekat menggunakan pengesahan bantuan rakan WeChat Kaedah terperinci untuk menyahsekat menggunakan pengesahan bantuan rakan WeChat Mar 25, 2024 pm 01:26 PM

1. Selepas membuka WeChat, klik ikon carian, masukkan pasukan WeChat, dan klik perkhidmatan di bawah untuk masuk. 2. Selepas memasukkan, klik pilihan alat layan diri di sudut kiri bawah. 3. Selepas mengklik, dalam pilihan di atas, klik pilihan untuk menyahsekat/merayu untuk pengesahan tambahan.

Bagaimana untuk log masuk ke e-mel WeChat korporat Bagaimana untuk log masuk ke e-mel WeChat korporat Mar 10, 2024 pm 12:43 PM

Bagaimana untuk log masuk ke alamat e-mel Enterprise WeChat? Anda boleh log masuk ke alamat e-mel dalam APP Enterprise WeChat, tetapi kebanyakan pengguna tidak tahu cara log masuk ke alamat e-mel Seterusnya ialah tutorial grafik tentang cara log masuk ke alamat e-mel Enterprise WeChat yang dibawa oleh editor untuk pengguna yang berminat Datang dan lihat! Tutorial penggunaan WeChat Enterprise Cara log masuk ke e-mel Enterprise WeChat 1. Mula-mula buka APP WeChat Enterprise, pergi ke [Workbench] di bahagian bawah halaman utama dan klik untuk datang ke kawasan khas 2. Kemudian di Workbench kawasan, pilih perkhidmatan [Peti Mel Perusahaan] 3. Kemudian lompat ke halaman fungsi e-mel korporat, klik [Bind] atau [Tukar E-mel] di bahagian bawah ditunjukkan di bawah untuk log masuk ke e-mel.

Menganalisis penggunaan dan klasifikasi ulasan JSP Menganalisis penggunaan dan klasifikasi ulasan JSP Feb 01, 2024 am 08:01 AM

Klasifikasi dan Analisis Penggunaan Komen JSP Komen JSP terbahagi kepada dua jenis: komen satu baris: berakhir dengan, hanya satu baris kod boleh diulas. Komen berbilang baris: bermula dengan /* dan berakhir dengan */, anda boleh mengulas berbilang baris kod. Contoh ulasan satu baris Contoh ulasan berbilang baris/**Ini ialah ulasan berbilang baris*Boleh mengulas pada berbilang baris kod*/Penggunaan ulasan JSP Komen JSP boleh digunakan untuk mengulas kod JSP agar lebih mudah dibaca

Log masuk GeForce Experience terhenti [Betulkan] Log masuk GeForce Experience terhenti [Betulkan] Mar 19, 2024 pm 06:30 PM

Artikel ini akan membimbing anda untuk menyelesaikan isu ranap log masuk GeForceExperience pada Windows 11/10. Biasanya, ini boleh disebabkan oleh sambungan rangkaian yang tidak stabil, cache DNS yang rosak, pemacu kad grafik yang lapuk atau rosak, dsb. Betulkan Skrin Hitam Log Masuk GeForceExperience Sebelum memulakan, pastikan anda memulakan semula sambungan Internet dan komputer anda. Kadangkala, masalah itu mungkin hanya disebabkan oleh isu sementara. Jika anda masih mengalami masalah skrin hitam log masuk NVIDIA GeForce Experience, sila pertimbangkan untuk mengambil cadangan berikut: Semak sambungan internet anda Tukar kepada sambungan internet lain Lumpuhkan anda

Ciri baharu dalam PHP 8: Ditambah pengesahan dan tandatangan Ciri baharu dalam PHP 8: Ditambah pengesahan dan tandatangan Mar 27, 2024 am 08:21 AM

PHP8 ialah versi PHP terkini, membawa lebih banyak kemudahan dan fungsi kepada pengaturcara. Versi ini mempunyai tumpuan khusus pada keselamatan dan prestasi, dan salah satu ciri baharu yang perlu diberi perhatian ialah penambahan keupayaan pengesahan dan tandatangan. Dalam artikel ini, kita akan melihat dengan lebih dekat ciri baharu ini dan kegunaannya. Pengesahan dan tandatangan adalah konsep keselamatan yang sangat penting dalam sains komputer. Ia sering digunakan untuk memastikan bahawa data yang dihantar adalah lengkap dan sahih. Pengesahan dan tandatangan menjadi lebih penting apabila berurusan dengan transaksi dalam talian dan maklumat sensitif kerana jika seseorang dapat mengganggu data, ia berpotensi

See all articles