C# 使用EF框架实现登录

8 篇文章 0 订阅

实现EF登录

一:首先创建项目,搭建三层这些就不多说了
二:页面代码


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link href="~/assets/css/bootstrap.min.css" rel="stylesheet" />
    <link rel="stylesheet" href="~/assets/css/font-awesome.min.css" />
    <link rel="stylesheet" href="~/assets/css/ace.min.css" />
    <link rel="stylesheet" href="~/assets/css/ace-rtl.min.css" />
    <link rel="stylesheet" href="~/assets/css/ace-skins.min.css" />
    <link rel="stylesheet" href="~/css/style.css" />
    <script src="~/js/jquery-1.9.1.min.js"></script>
    <script src="~/assets/layer/layer.js" type="text/javascript"></script>
    <title>登录</title>
</head>
<body class="login-layout Reg_log_style">
    <div class="logintop">
        <span>欢迎后台管理界面平台</span>
        <ul>
            <li><a href="#">返回首页</a></li>
            <li><a href="#">帮助</a></li>
            <li><a href="#">关于</a></li>
        </ul>
    </div>
    <div class="loginbody">
        <div class="login-container">
            <div class="center">
                <img src="~/images/logo1.png" />
            </div>
            <div class="space-6"></div>
            <div class="position-relative">
                <div id="login-box" class="login-box widget-box no-border visible">
                    <div class="widget-body">
                        <div class="widget-main">
                            <h4 class="header blue lighter bigger">
                                <i class="icon-coffee green"></i>
                                管理员登录
                            </h4>
                            <div class="login_icon"><img src="~/images/login.png" /></div>
                            <form class="">
                                <fieldset>
                                    <ul>
                                        <li class="frame_style form_error"><label class="user_icon"></label><input name="用户名" type="text" id="username" /><i>用户名</i></li>
                                        <li class="frame_style form_error"><label class="password_icon"></label><input name="密码" type="password" id="userpwd" /><i>密码</i></li>
                                        <li class="frame_style form_error">
                                            <label class="Codes_icon"></label>
                                            <input name="验证码" type="text" id="Codes_text" value="" />
                                            <i>验证码</i>
                                            <div class="Codes_region" >
                                                @*<span width="80" height="40" οnclick="createCode(4)" id="checkloing"></span>*@
                                                <canvas width="80" height="40" id="verifyCanvas"></canvas>
                                                <img id="code_img" />
                                                <input id="code" value="" type="hidden" />
                                            </div>
                                        </li>
                                    </ul>
                                    <div class="space"></div>
 
                                    <div class="clearfix">
                                        <label class="inline">
                                            <input type="checkbox" class="ace" />
                                            <span class="lbl">保存密码</span>
                                        </label>
 
                                        <button type="button" class="width-35 pull-right btn btn-sm btn-primary" id="login_btn">
                                            <i class="icon-key"></i>
                                            登录
                                        </button>
                                    </div>
 
                                    <div class="space-4"></div>
                                </fieldset>
                            </form>
                            <div class="social-or-login center">
                                <span class="bigger-110">通知</span>
                            </div>
                            <div class="social-login center">
                                本网站系统不再对IE11以下浏览器支持,请见谅。
                            </div>
                        </div><!-- /widget-main -->
                        <div class="toolbar clearfix">
                        </div>
                    </div><!-- /widget-body -->
                </div><!-- /login-box -->
            </div><!-- /position-relative -->
        </div>
    </div>
</body>
</html>
<script src="~/Scripts/Admin/login.js" type="text/javascript"></script>

三:js代码:

var nums = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
];
var str = '';
var verVal = drawCode();
// 绘制验证码
function drawCode(str) {
    var canvas = document.getElementById("verifyCanvas"); //获取HTML端画布
    var context = canvas.getContext("2d"); //获取画布2D上下文
    context.fillStyle = "cornflowerblue"; //画布填充色
    context.fillRect(0, 0, canvas.width, canvas.height); //清空画布
    context.fillStyle = "white"; //设置字体颜色
    context.font = "25px Arial"; //设置字体
    var rand = new Array();
    var x = new Array();
    var y = new Array();
    for (var i = 0; i < 4; i++) {
        rand.push(rand[i]);
        rand[i] = nums[Math.floor(Math.random() * nums.length)]
        x[i] = i * 15 + 10;
        y[i] = Math.random() * 20 + 20;
        context.fillText(rand[i], x[i], y[i]);
    }
    str = rand.join('').toUpperCase();
    $("#code").val(str);
 
    //画3条随机线
    for (var i = 0; i < 3; i++) {
        drawline(canvas, context);
    }
 
    // 画30个随机点
    for (var i = 0; i < 30; i++) {
        drawDot(canvas, context);
    }
    convertCanvasToImage(canvas);
    return str;
}
 
// 随机线
function drawline(canvas, context) {
    context.moveTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height)); //随机线的起点x坐标是画布x坐标0位置,y坐标是画布高度的随机数
    context.lineTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height)); //随机线的终点x坐标是画布宽度,y坐标是画布高度的随机数
    context.lineWidth = 0.5; //随机线宽
    context.strokeStyle = 'rgba(50,50,50,0.3)'; //随机线描边属性
    context.stroke(); //描边,即起点描到终点
}
// 随机点(所谓画点其实就是画1px像素的线,方法不再赘述)
function drawDot(canvas, context) {
    var px = Math.floor(Math.random() * canvas.width);
    var py = Math.floor(Math.random() * canvas.height);
    context.moveTo(px, py);
    context.lineTo(px + 1, py + 1);
    context.lineWidth = 0.2;
    context.stroke();
 
}
// 绘制图片
function convertCanvasToImage(canvas) {
    document.getElementById("verifyCanvas").style.display = "none";
    var image = document.getElementById("code_img");
    image.src = canvas.toDataURL("image/png");
    return image;
}
 
// 点击图片刷新
document.getElementById('code_img').onclick = function () {
    resetCode();
}
 
function resetCode() {
    $('#verifyCanvas').remove();
    $('#code_img').before('<canvas width="80" height="40" id="verifyCanvas"></canvas>')
    verVal = drawCode();
}
 
//点击登录js
$("#login_btn").click(function(){
    var num = 0;
    var str = "";
    $("input[type$='text'],input[type$='password']").each(function (n) {
        if ($(this).val() === "") {
            layer.alert(str += "" + $(this).attr("name") + "不能为空!\r\n", {
                title: '提示框',
                icon: 0
            });
            num++;
            return false;
        }
    });
    if (num > 0) { return false; }
    else {
        //登录方法获取拼接数据
        var data = {};
        data.Name = $("#username").val();
        data.Password = $("#userpwd").val();
        var isChecked = $(".ace").is(':checked');
        var Codes_text = $("#Codes_text").val();
        var code = $("#code").val()
        if (Codes_text.toUpperCase() != code) {
            layer.msg("验证码不正确!!", { time: 2000 }, function () {
                resetCode();
            })
            return;
        }
        $.ajax({
            url: "/Home/ButLogin?isChecked=" + isChecked,
            type: "Post",
            data: data,
            success: function (data) {
                if (data.Success) {
                    layer.alert('登录成功!', {
                        title: '提示框',
                        icon: 1
                    });
                    window.location.href = "/Home/Index";
                    layer.close(index);
                } else {
                    layer.alert('登录失败!', {
                        title: '提示框',
                        icon: 0
                    });
                    layer.close(index);
                }
            },
            error: function (data) {
                $.messager.alert('错误', data.msg);
            }
        });   
    }
});
 
//页面加载js
$(function () {
    $("input[type='text'],input[type='password']").blur(function () {
        var $el = $(this);
        var $parent = $el.parent();
        $parent.attr('class', 'frame_style').removeClass(' form_error');
        if ($el.val() === '') {
            $parent.attr('class', 'frame_style').addClass(' form_error');
        }
    });
    $("input[type='text'],input[type='password']").focus(function () {
        var $el = $(this);
        var $parent = $el.parent();
        $parent.attr('class', 'frame_style').removeClass(' form_errors');
        if ($el.val() === '') {
            $parent.attr('class', 'frame_style').addClass(' form_errors');
        } else {
            $parent.attr('class', 'frame_style').removeClass(' form_errors');
        }
    });
});

四:后台代码

/// <summary>
        /// 登录页面
        /// </summary>
        /// <returns></returns>
        public ActionResult Login()
        {
            //如果session在的话直接跳转到主页
            if (AdminContext.context.adminInfo != null)
            {
                return RedirectToAction("Index", "Home");
            }
 
            //获取cookie
            var cookie = System.Web.HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
            //如果cookie存在的话
            if (cookie != null)
            {
                //获取存在的cookie
                var ticket = FormsAuthentication.Decrypt(cookie.Value);
                string userData = ticket.UserData;
 
                //如果存在cookie数据
                if (!string.IsNullOrEmpty(userData))
                {
                    //创建管理员信息对象将cookie的数据赋值给管理员对象
                    AdminUser adminUser = new AdminUser();
                    adminUser.Id = Convert.ToInt32(userData.Split('#')[0]);
                    adminUser.Name = userData.Split('#')[1];
 
                    //存储在session里面
                    AdminContext.context.adminInfo = adminUser;
 
                    //跳转到主页
                    return RedirectToAction("Index", "Home");
                }
            }
            return View();
        }
        /// <summary>
        /// 登录功能
        /// </summary>
        /// <param name="adminInfo"></param>
        /// <param name="isChecked"></param>
        /// <returns></returns>
        public JsonResult ButLogin(AdminUser adminUser, bool isChecked)
        {
            //创建一个操作结果对象
            OperateResult operateResult = new OperateResult();
 
            //调用业务层登录方法
            AdminUser result = new AdminUser();
            if (service.Exists(a => a.Name == adminUser.Name && a.Password == adminUser.Password))
            {
                result = service.Query(a => a.Name == adminUser.Name && a.Password == adminUser.Password);
                result.LastLoginTime = DateTime.Now;
                result.LastLoginIP = ObtainIP.GetLocalIP();
                service.Update(result);
            }
 
            //如果返回了对象说明登录成功
            if (result != null && result.Enabled==true)
            {
                //返回成功
                operateResult.Success = true;
 
                //存进session
                AdminContext.context.adminInfo= result;
 
                //如果记住密码
                if (isChecked)
                {
                    //拼接要存的管理员id和登录名称
                    string userData = result.Id + "#" + result.Name;
                    //数据放入ticket
                    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, adminUser.Name, DateTime.Now, DateTime.Now.AddMinutes(60), false, userData);
                    //数据加密
                    string enyTicket = FormsAuthentication.Encrypt(ticket);
                    //创建cookie
                    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, enyTicket);
                    //写入cookie
                    System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                }
            }
            return Json(operateResult);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值