Home > Article > Web Front-end > Nodejs implements image verification code
With the development of Internet technology, graphical verification codes (CAPTCHA) are widely used in website login, registration, password retrieval and other places where user identity needs to be verified. It graphically displays some questions and answers, numbers, letters, etc. for users to judge, thereby preventing robots from registering and violently cracking passwords. This article will introduce how to implement image verification code using Node.js.
There are many third-party modules in Node.js that can be used to generate graphical verification codes. This article will use the svg-captcha
module , which can generate verification code images in SVG format. Execute the following command in the terminal to install it:
npm install svg-captcha
Create a app.js
file in the working directory and public
folder, public
folder is used to store verification code images. The following is the directory structure:
- app.js - public - captcha.svg
In the app.js
file, introduce the svg-captcha
module and create an Express instance:
const express = require('express') const svgCaptcha = require('svg-captcha') const app = express() // 其他代码
In order to implement the image verification code, you need to create a route to generate the verification code image. Create a route /captcha
in the app.js
file:
app.get('/captcha', (req, res) => { const captcha = svgCaptcha.create() res.type('svg') res.status(200) res.send(captcha.data) })
In this route, call the svgCaptcha.create()
function Generate a random verification code string and corresponding SVG image, and then send it to the client.
In order for the generated verification code to match the verification code returned by the client, the generated verification code string needs to be saved in the session and Validation occurs when the client submits the form. Add the following logic in the route:
app.get('/captcha', (req, res) => { const captcha = svgCaptcha.create() req.session.captcha = captcha.text res.type('svg') res.status(200) res.send(captcha.data) }) app.post('/login', (req, res) => { const { username, password, captcha } = req.body const expectedCaptcha = req.session.captcha if (expectedCaptcha === captcha) { // 验证码正确,进行登录操作 } else { // 验证码错误,返回错误提示 } })
Save the generated verification code string in the session in the /captcha
route, and then compare the verification code string with the one when the user submits the form The verification codes entered by the user are compared. If they are the same, it is judged that the verification is successful and subsequent operations are performed.
After completing the above steps, execute the following command to start the server:
node app.js
Then access http in the browser: //localhost:3000/captcha
, you should be able to see the generated verification code image. Enter the verification code in the login form and submit the form for subsequent operations.
Summary
It is not difficult to implement image verification code using Node.js. It only requires a third-party module to complete. However, in order to improve the security of the verification code, you need to pay attention to the following points:
The above is the detailed content of Nodejs implements image verification code. For more information, please follow other related articles on the PHP Chinese website!