使用LayUI登录页制作登录验证码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="../common/taglib.jsp"%>
<%@ page import="java.text.SimpleDateFormat,java.util.Date"%>
<!DOCTYPE html>
<html>
<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" href="<c:url value="/plugins/layuimini/lib/layui-v2.5.5/css/layui.css"/>" media="all">
    <!--[if lt IE 9]>
    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style>
        html, body {width: 100%;height: 100%;overflow: hidden}
        body {background: #009688;}
        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:#009688;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%;}
        #canvas {        
		 	float: right;        
		 	display: inline-block;        
		 	border: 1px solid #D2D2D2!important;        
		 	border-radius: 5px;        
		 	cursor: pointer;
		 	width:100%;
		}
    </style>
</head>
<body>
<div class="layui-container layui-anim layui-anim-upbit">
    <div class="admin-login-background">
        <div class="layui-form login-form">
            <form class="layui-form" action="">
                <div class="layui-form-item logo-title">
                    <h1>Layui系统平台登录</h1>
                </div>
                <div class="layui-form-item">
                    <label class="layui-icon layui-icon-username" for="username"></label>
                    <input type="text" name="username" id="username" lay-verify="required|account" placeholder="用户名" autocomplete="off" class="layui-input" value="">
                </div>
                <div class="layui-form-item">
                    <label class="layui-icon layui-icon-password" for="password"></label>
                    <input type="password" name="password" id="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" for="captcha"></label>
                    <input type="text" name="captcha" id="captcha" lay-verify="required|captcha" placeholder="图形验证码" autocomplete="off" class="layui-input verification captcha" value="">
                    <div class="captcha-img">
                        <canvas id="canvas" class="layui-input"></canvas>
                    </div>
                </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-fluid" lay-submit="" lay-filter="login">登 入</button>
                </div>
            </form>
        </div>
    </div>
</div>
<script src="<c:url value="/plugins/layuimini/lib/jquery-3.4.1/jquery-3.4.1.min.js"/>" charset="utf-8"></script>
<script src="<c:url value="/plugins/layuimini/lib/layui-v2.5.5/layui.js"/>" charset="utf-8"></script>
<script src="<c:url value="/plugins/layuimini/lib/jq-module/jquery.particleground.min.js"/>" charset="utf-8"></script>
<script>
    layui.use(['form'], function () {
        var form = layui.form,
            layer = layui.layer;
		//验证码
        var verification_code = [];
    	draw(verification_code);
    	$("#canvas").on('click',function(){
    		draw(verification_code);
    	});
        
        // 登录过期的时候,跳出ifram框架
        if (top.location != self.location) {
        	top.location = self.location;
        }

        // 粒子线条背景
        $(document).ready(function(){
            $('.layui-container').particleground({
                dotColor:'#5cbdaa',
                lineColor:'#5cbdaa'
            });
        });

        // 进行登录操作
        form.on('submit(login)', function (data) {
            data = data.field;
            if (data.username == '') {
                layer.msg('用户名不能为空');
                return false;
            }
            if (data.password == '') {
                layer.msg('密码不能为空');
                return false;
            }
            var verificationCode = verification_code.join("");
            if (data.captcha == '') {
                layer.msg('验证码不能为空');
                return false;
            } else if(data.captcha.toUpperCase() != verificationCode) {
            	 layer.msg('验证码输入错误');
            	 $("#canvas").click()
                 return false;
            }
            
            var param = {"loginId" : $("#username").val(), "password" : $("#password").val()};
    		jQuery.ajax({
    			type:"post",
    			data: JSON.stringify(param),
    			async: true,
    			dataType: 'json',
    	  		contentType: 'application/json',
    			url: '../web/userLogin',
    			success:function(result){
    				if(result.success){
    					layer.msg('登录成功', function () {
    						location.href = result.data.url;
    		            });
    				}else{
    					layer.msg(result.error);
    				}
    			},
    			error:function(){
    				layer.msg("服务器连接失败.");
    			}
    	    });
            return false;
        });
    });
    
   	function draw(verification_code) {
   		var canvas_width = $('#canvas').width();
   		var canvas_height = $('#canvas').height();
   		var canvas = document.getElementById("canvas");
   		var context = canvas.getContext("2d");
   		canvas.width = canvas_width;
   		canvas.height = canvas_height;
   		
   		var randomCode = "A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0";
   		var randomCodeStr = randomCode.split(",");
   		var randomCodeLength = randomCodeStr.length;
   		for (var i = 0; i <= 3; i++) { //绘制数字
   			var j = Math.floor(Math.random() * randomCodeLength);      
   			var rotate = Math.random() * 50 * Math.PI / 180;        
   			var content = randomCodeStr[j];       
   			verification_code[i] = content.toUpperCase();            
   			var x = 10 + i * 20;       
   			var y = 20 + Math.random() * 8;    
   			context.font = "bold 23px 微软雅黑";             
   			context.translate(x, y);            
   			context.rotate(rotate);             
   			context.fillStyle = randomColor();            
   			context.fillText(content, 0, 0);             
   			context.rotate(-rotate);            
   			context.translate(-x, -y);
   		}
   		for (var i = 0; i <= 5; i++) { //绘制线条            
   			context.strokeStyle = randomColor();           
   			context.beginPath();            
   			context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);            
   			context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);            
   			context.stroke();        
   		}        
   		for (var i = 0; i <= 60; i++) { //绘制小点            
   			context.strokeStyle = randomColor();            
   			context.beginPath();            
   			var x = Math.random() * canvas_width;            
   			var y = Math.random() * canvas_height;            
   			context.moveTo(x, y);            
   			context.lineTo(x + 1, y + 1);            
   			context.stroke();        
   		}
   	}
   	
   	function randomColor() {//得到随机的颜色值        
   		var r = Math.floor(Math.random() * 256);        
   		var g = Math.floor(Math.random() * 256);        
   		var b = Math.floor(Math.random() * 256);        
   		return "rgb(" + r + "," + g + "," + b + ")";    
   	}
</script>
</body>
</html>
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在HTML代码中添加一个验证码输入框和一个显示验证码的区域,如下所示: ```html <div class="layui-form-item"> <label class="layui-form-label">验证码</label> <div class="layui-input-inline"> <input type="text" name="verifyCode" placeholder="请输入验证码" class="layui-input"> </div> <div class="layui-input-inline"> <img id="verifyCodeImg" src="验证码生成接口" alt="验证码"> </div> </div> ``` 其中,`verifyCode` 是验证码输入框的 name 属性,`verifyCodeImg` 是显示验证码的 img 标签的 id 属性。在这个例子中,验证码使用一个接口生成的,你也可以自己实现一个验证码生成函数。 然后,在 JavaScript 代码中,你需要使用 layui 的 form 模块和 jQuery 库来处理验证码的验证和刷新。代码如下: ```javascript layui.use(['form'], function () { var form = layui.form; // 点击验证码图片时刷新验证码 $('#verifyCodeImg').click(function() { $(this).attr('src', '验证码生成接口?' + new Date().getTime()); }); // 表单验证 form.verify({ verifyCode: function(value) { if (value.length != 4) { return '验证码长度必须为4位'; } var result; $.ajax({ url: '验证码验证接口', type: 'POST', data: {'verifyCode': value}, async: false, success: function(data) { result = data; } }); if (result != 'true') { return '验证码不正确'; } } }); }); ``` 在这个例子中,`验证码生成接口` 和 `验证码验证接口` 分别是生成验证码和验证验证码的接口地址。当用户点击验证码图片时,会使用一个新的时间戳来刷新验证码。当用户提交表单时,会将验证码的值通过 AJAX 提交到 `验证码验证接口` 进行验证。如果验证码不正确,表单验证会返回错误信息。 注意:以上代码只是一个示例,你需要将其根据你的实际需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值