登录验证码
⼀:⽤到了hutool⼯具类中的验证码⽣成类,黄⾊标注为重点
1.引⽤maven
<!--hutool⼯具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.1</version>
</dependency>
2.前端html页⾯
<!DOCTYPE html>
<html xmlns:th="">
<head>
<meta charset="UTF-8">
<title>后台管理-登陆</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" th:href="@{/lib/layui-v2.6.3/css/layui.css}"  media="all">
<script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
<script th:src="@{/lib/layui-v2.6.3/layui.js}"  charset="utf-8"></script>
<script th:src="@{/lib/jq-module/jquery.particleground.min.js}" charset="utf-8"></script>
<!--[if lt IE 9]>
<script src="/html5shiv/r29/html5.min.js"></script>
<script src="/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
html, body {width: 100%;height: 100%;overflow: hidden}
body {background: #1E9FFF;}
body:after {content:'';background-repeat:no-repeat;background-size:cover;-webkit-filter:blur(3px);-moz-
filter:blur(3px);-o-filter:blur(3px);-ms-filter:blur(3px);filter:blur(3px);position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1        .layui-container {width: 100%;height: 100%;overflow: hidden}
.admin-login-background {width:360px;height:300px;position:absolute;left:50%;top:40%;margin-left:-180px;margin-top:-100px;}
.logo-title {text-align:center;letter-spacing:2px;padding:14px 0;}
.logo-title h1 {color:#1E9FFF;font-size:25px;font-weight:bold;}
.login-form {background-color:#fff;border:1px solid #fff;border-radius:3px;padding:14px 20px;box-shadow:0 0 8px #eeeeee;}
.login-form .layui-form-item {position:relative;}
.login-form .layui-form-item label {position:absolute;left:1px;top:1px;width:38px;line-height:36px;text-align:center;color:#d2d2d2;}
.login-form .layui-form-item input {padding-left:36px;}
.captcha {width:60%;display:inline-block;}
.captcha-img {display:inline-block;width:34%;float:right;}
.captcha-img img {height:34px;border:1px solid #e6e6e6;height:36px;width:100%;}
</style>
</head>
<body>
<div class="layui-container">
<div class="admin-login-background">
<div class="layui-form login-form">
<form class="layui-form" action="javaScript:;" >
<!--<form class="layui-form" action="javaScript:;" onsubmit="return checkForm()">-->
<div class="layui-form-item logo-title">
<h1>我佛慈悲后台登录</h1>
</div>
<div class="layui-form-item">
<label class="layui-icon layui-icon-username" for="username"></label>
<input type="text" id="username" name="username" lay-verify="required|account" placeholder="账号" autocomplete="off" class="layui-input" value="">
</div>
<div class="layui-form-item">
html怎么实现登录验证功能<label class="layui-icon layui-icon-password" for="password"></label>
<input type="password" id="password" name="password" lay-verify="required|password" placeholder="密码" autocomplete="off" class="layui-input" value="">
</div>
<div class="layui-form-item">
<label class="layui-icon layui-icon-vercode" ></label>
<!--<input type="text" name="captcha" lay-verify="required|captcha" placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha" value="xszg">-->
<input type="text" id="imgText" name="imgText"  placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha" >
<div class="captcha-img">
<!--<img id="captchaPic" th:src="@{/images/captcha.jpg}" >-->
<img id="codeImg" th:src="@{/getCode}" onclick="refresh()" alt="" >
</div>
</div>
<div class="layui-form-item">
<font id="error" name="error" color="red"></font>
</div>
<div class="layui-form-item">
<input type="checkbox" name="rememberMe" value="true" lay-skin="primary" title="记住密码">
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn layui-btn-normal layui-btn-fluid" lay-submit="" lay-filter="login">登⼊</button>
</div>
</form>
</div>
</div>
</div>
<script>
function refresh() {
console.log(1)
// $('#codeImg').src="getCode?time="+new Date().getTime();
}
</script>
<script>
layui.use(['form'], function () {
var form = layui.form,
layer = layui.layer
// $ = layui.$;
// 登录过期的时候,跳出ifram框架
if (top.location != self.location) top.location = self.location;
// 粒⼦线条背景
$(document).ready(function(){
$('.layui-container').particleground({
dotColor:'#7ec7fd',
lineColor:'#7ec7fd'
});
});
// 进⾏登录操作
<('submit(login)', function (data) {
data = data.field;
if (data.username == '') {
layer.msg('⽤户名不能为空');
return false;
}
if (data.password == '') {
layer.msg('密码不能为空');
return false;
}
if (data.imgText == '') {
layer.msg('验证码不能为空');
return false;
}
$.ajax({
// url: "localhost:8081/login",
url: "/login",
data: {
username: data.username,
password: data.password,
imgText: data.imgText
},
dataType: "json",
type: "post",
success: function(data) {
if (de == "1000") {
console.log(data.msg)
window.location.href="/toIndex";
} else {
alert(data.msg);
// innerText = data.msg
$("#error").text(data.msg);
}
}
});
});
});
</script>
</body>
</html>
3.后端java代码
package com.ller;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import cn.ator.RandomGenerator;
import com.jack.allmon.AjaxReturn;
import com.ity.TUser;
import com.jack.all.service.TUserService;
import org.apachemons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@Controller
public class LoginController {
@Autowired
private TUserService userService;
private LineCaptcha lineCaptcha;//获取验证码⽤到的code
/**
*进⼊到登录界⾯
* @return
*/
@RequestMapping("/toLogin")
public String toLogin(){
return "login-1";
}
/**
* 登录验证
* @param request
* @param session
* @return
*/
@RequestMapping("/login")
@ResponseBody
public AjaxReturn login(HttpServletRequest request, HttpSession session){        String Parameter("username");
String Parameter("password");
String Parameter("imgText");
System.out.println("======"+imgText);
TUser check = userService.check(number, password);
if (ObjectUtils.isEmpty(check)){
return new AjaxReturn("1001","账号不存在");
}else {
if (!Number().equals(number)){
return new AjaxReturn("1001","账号错误");
}else {
if (!Password().equals(password)){
return new AjaxReturn("1001","密码错误");
}else if (!imgText.Code())){
return new AjaxReturn("1001","验证码错误");
}
}
}
session.setAttribute("login_user",check);
return new AjaxReturn("1000","账号和密码正确",check);
}
/**
* ⽣成验证码
* @param response
*/
@RequestMapping("/getCode")
public void getCode(HttpServletResponse response){
//随机⽣成4为验证码
RandomGenerator randomGenerator=new RandomGenerator("0123456789",4);
//定义图⽚的显⽰⼤⼩
ateLineCaptcha(100,30);
response.setContentType("image/jpeg");
response.setHeader("Pragma","No-cache");
try {
//调⽤⽗类的setGenerator()⽅法,设置验证码的类型
lineCaptcha.setGenerator(randomGenerator);
//输出到页⾯
lineCaptcha.OutputStream());
System.out.Code());
//关闭流
}catch (Exception e){
e.printStackTrace();
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。