根据layui写登陆页面

页面:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>登入 - 爱清净</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" media="all">
    <link rel="stylesheet" href="/layuiadmin/style/admin.css" media="all">
    <link rel="stylesheet" href="/layuiadmin/style/login.css" media="all">
    <style>
        #canvas {
            float: right;
            display: inline-block;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
    </style>
</head>
<body>
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
    <div class="layadmin-user-login-main">
        <div class="layadmin-user-login-box layadmin-user-login-header">
            <h2>爱清净</h2>
            <p>爱清净 后台管理系统</p>
        </div>
        <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
            <div class="layui-form-item">
                <label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
                <input type="text" name="loginName" id="loginName" lay-verify="required" placeholder="用户名" class="layui-input">
            </div>
            <div class="layui-form-item">
                <label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
                <input type="password" name="passWord" id="passWord" lay-verify="required" placeholder="密码" class="layui-input">
            </div>
            <div class="layui-form-item">
                <div class="layui-row">
                    <div class="layui-col-xs7">
                        <label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label>
                        <input type="text" name="vercode" id="vercode" lay-verify="required" placeholder="图形验证码" class="layui-input">
                    </div>
                    <div class="layui-col-xs5">
                        <div style="margin-left: 10px;">
                            <canvas id="canvas" width="129.53" height="38"></canvas>
                        </div>
                    </div>
                </div>
            </div>
            <div class="layui-form-item">
                <button id="btn" class="layui-btn layui-btn-fluid" lay-submit lay-filter="login">登 入</button>
            </div>
        </div>
    </div>

</div>
<script src="/lib/jquery/jquery.min.js"></script>
<script src="/layuiadmin/layui/layui.js"></script>
<script src="/js/admin/login.js"></script>
</body>
</html>

js:

var show_num = []; //存储随机验证码

$(function(){
    //生成随机验证码
    draw(show_num);

    $("#canvas").on('click',function(){
        draw(show_num);
    });

});

//获得随机验证码
function draw(show_num) {
    var canvas_width=$('#canvas').width();
    var canvas_height=$('#canvas').height();
    var canvas = document.getElementById("canvas");//获取到canvas的对象,演员
    var context = canvas.getContext("2d");//获取到canvas画图的环境,演员表演的舞台
    canvas.width = canvas_width;
    canvas.height = canvas_height;
    var sCode = "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 aCode = sCode.split(",");
    var aLength = aCode.length;//获取到数组的长度

    for (var i = 0; i <= 3; i++) {
        var j = Math.floor(Math.random() * aLength);//获取到随机的索引值
        var deg = Math.random() * 30 * Math.PI / 180;//产生0~30之间的随机弧度
        var txt = aCode[j];//得到随机的一个内容
        show_num[i] = txt.toLowerCase();
        var x = 10 + i * 20;//文字在canvas上的x坐标
        var y = 20 + Math.random() * 8;//文字在canvas上的y坐标
        context.font = "bold 23px 微软雅黑";

        context.translate(x, y);
        context.rotate(deg);

        context.fillStyle = randomColor();
        context.fillText(txt, 0, 0);

        context.rotate(-deg);
        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 <= 30; 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 + ")";
}

layui.config({
    base: '/layuiadmin/' //静态资源所在路径
}).extend({
    index: 'lib/index' //主入口模块
}).use(['index', 'user'], function(){
    var $ = layui.$
        ,setter = layui.setter
        ,admin = layui.admin
        ,form = layui.form
        ,router = layui.router()
        ,search = router.search;

    form.render();

    //提交
    form.on('submit(login)', function(obj){
        //校验随机验证码
        var val = $("#vercode").val().toLowerCase();
        // var val = $(".vercode").val().toLowerCase();
        var num = show_num.join("");
        console.log("val:"+val);
        console.log("num:"+num);
        if(val != num){
            layer.msg('验证码错误', {
                offset: '15px'
                ,icon: 2
                ,time: 1000
            }, function(){
                $("#vercode").val('');
                draw(show_num);
                return;
            });

        }else{
            $("#vercode").val('');
            draw(show_num);
            $.ajax({
                url:'/admin/login.dd',
                type: 'post',
                data: obj.field,
                success:function (result) {
                    if(result.state==false){
                        var message=result.message;
                        layer.msg(message, {
                            offset: '15px'
                            ,icon: 2
                            ,time: 1000
                        }, function(){
                            return;
                        });
                    }else{
                        layer.msg('登入成功', {
                            offset: '15px'
                            ,icon: 1
                            ,time: 1000
                        }, function(){
                            location.href="/admin/index"; //后台主页
                        });
                    }
                }
            })
        }

    });
});

controller:

 /**
     * 验证登陆
     * @return
     */
    @PostMapping("login.dd")
    @ResponseBody
    public AjaxResult login(HttpServletRequest request){
        AjaxResult ajaxResult=new AjaxResult();
        ajaxResult.setState(true);
        String loginName=request.getParameter("loginName");
        String passWord=request.getParameter("passWord");
        //密码加密
        passWord=encodePassword(passWord);

        Example example=new Example(UserEntity.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("loginName",loginName);
        criteria.andEqualTo("delFlag","0");
        List<UserEntity> back = userService.findList(example,null);
        if(back==null||back.size()<=0){
            ajaxResult.setState(false);
            ajaxResult.setMessage("账号或密码错误");
        }else if(!passWord.equals(back.get(0).getPassWord())){
            ajaxResult.setState(false);
            ajaxResult.setMessage("账号或密码错误");
        }else{
            System.out.println("登录成功");
        }
        return ajaxResult;
    }

猜你喜欢

转载自blog.csdn.net/weixin_39936341/article/details/84570627
今日推荐