Пример #1
0
        /// <summary>
        /// 登陆验证
        /// </summary>
        /// <returns></returns>
        public ActionResult CheckLogin()
        {
            //1、判断验证码是否正确
            var validateCode = Session["ValidateCode"]?.ToString();

            if (string.IsNullOrEmpty(validateCode))
            {
                return(Content("no:验证码错误!!"));
            }

            Session["ValidateCode"] = null;
            var txtCode = Request["vCode"];

            if (!validateCode.Equals(txtCode, StringComparison.InvariantCultureIgnoreCase))
            {
                return(Content("no:验证码错误!!"));
            }

            //2、判断用户输入的用户名和密码
            var userName = Request["LoginCode"];
            var userPwd  = Request["LoginPwd"];
            var userInfo = UserInfoBll.LoadEntities(u => u.UserName == userName && u.UserPwd == userPwd)
                           .FirstOrDefault();

            if (userInfo != null)
            {
                //共享session数据,只能应用于部署单台服务器。
                //Session["UserInfo"] = userInfo;

                //使用Memcache代替Session解决数据在不同web服务器之间共享的问题
                var sessionId = Guid.NewGuid().ToString();
                //memcached储存对象需要序列化
                //Common.MemcachedHelper.Set(sessionId, userInfo, DateTime.Now.AddMinutes(20));
                Common.MemcachedHelper.Set(
                    sessionId,
                    Common.SerializerHelper.SerializerToString(userInfo),
                    DateTime.Now.AddMinutes(20)
                    );
                //将Memcache的key以cookie的形式返回到浏览器端的内存中,当用户再次请求其他的页面,请求报文中会以Cookie将该值再次发送服务端。
                Response.Cookies["sessionId"].Value = sessionId;

                //记住我
                if (!string.IsNullOrEmpty(Request["checkMe"]))
                {
                    HttpCookie cookie1 = new HttpCookie("cp1", userInfo.UserName);
                    HttpCookie cookie2 = new HttpCookie("cp2",
                                                        WebCommon.GetMd5String(WebCommon.GetMd5String(userInfo.UserPwd)));
                    cookie1.Expires = DateTime.Now.AddDays(3);
                    cookie2.Expires = DateTime.Now.AddDays(3);
                    Response.Cookies.Add(cookie1);
                    Response.Cookies.Add(cookie2);
                }

                return(Content("ok:登陆成功"));
            }
            else
            {
                return(Content("no:用户名或者密码错误"));
            }
        }
Пример #2
0
        /// <summary>
        /// 判断Cookie信息
        /// </summary>
        private void CheckCookieInfo()
        {
            if (Request.Cookies["cp1"] != null && Request.Cookies["cp2"] != null)
            {
                var userName = Request.Cookies["cp1"].Value;
                var userPwd  = Request.Cookies["cp2"].Value;
                //判断cookie中储存的用户密码和用户名是否正确
                var userInfo = UserInfoBll.LoadEntities(u => u.UserName == userName)
                               .FirstOrDefault();
                if (userInfo != null)
                {
                    //注意:用户密码一定要加密以后保存到数据库
                    if (WebCommon.GetMd5String(WebCommon.GetMd5String(userInfo.UserPwd)) == userPwd)
                    {
                        var sessionId = Guid.NewGuid().ToString();
                        MemcachedHelper.Set(sessionId,
                                            SerializerHelper.SerializerToString(userInfo),
                                            DateTime.Now.AddMinutes(20));
                        Response.Cookies["sessionId"].Value = sessionId;

                        Response.Redirect("/Home/Index");
                    }
                }
            }

            //删除Cookies
            Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(-1);
            Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);
        }
Пример #3
0
        public bool ValidateUserLogin()
        {
            /*
             * 验证用户是否已经登陆
             * 验证session中是否有值 有的话就已经登陆了
             *
             * 验证cookie是否有值 ,,就是自动登陆是否生效
             * 是的 话也就直接登录了
             *
             *
             * 密码 md5加密一次 大写的保存  是加密了一之后再保存 而且保存还都是大写的
             *
             */

            var  current   = HttpContext.Current;
            bool isSuccess = true;

            if (current.Session["userInfo"] != null)
            {
                isSuccess = true;
            }
            else
            {
                if (current.Request.Cookies["cp1"] != null && current.Request.Cookies["cp2"] != null)
                {
                    string userName = current.Request.Cookies["cp1"].Value;
                    string userPwd  = current.Request.Cookies["cp2"].Value;
                    User   userInfo = GetModel(userName);
                    if (userInfo != null)
                    {
                        var p = WebCommon.GetMd5String(userInfo.LoginPwd.ToUpper());
                        if (userPwd == p)
                        {
                            current.Session["userInfo"] = userInfo;
                            isSuccess = true;
                        }
                        else
                        {
                            isSuccess = false;
                        }
                    }
                    else
                    {
                        //如果没有次用户 但是cookie值还有 那就要清空了
                        current.Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(-1);
                        current.Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);
                        isSuccess = false;
                    }
                }
                else
                {
                    isSuccess = false;
                }
            }
            //没有cookie 查不到用户的时候 都是没有登陆的两个合并到一起返回了就是
            return(isSuccess);
        }
 /// <summary>
 /// 对Cookie中储存的信息进行校验
 /// </summary>
 private void CheckCookieInfo()
 {
     if (Request.Cookies["cp1"] != null && Request.Cookies["cp2"] != null)
     {
         var userName = Request.Cookies["cp1"].Value;
         var userPwd  = Request.Cookies["cp2"].Value;
         //判断Cookie中储存的用户名是否正确
         if (userName == "yao")
         {
             if (userPwd == WebCommon.GetMd5String(WebCommon.GetMd5String("123")))
             {
                 Session["name"] = userPwd;//给Session赋值(自己加的)
                 Response.Redirect("04_Test.aspx");
             }
         }
         Response.Cookies["cp1"].Expires = DateTime.Now.AddDays(-1);
         Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);
     }
 }
        /// <summary>
        /// 判断用户名密码是否正确,用户登录
        /// </summary>
        private void CheckUserInfo()
        {
            var userName = Request.Form["txtName"];
            var userPwd  = Request.Form["txtPwd"];

            if (userName == "yao" && userPwd == "123")
            {
                Session["name"] = userName;//给Session赋值(自己加的)
                if (!string.IsNullOrEmpty(Request.Form["checkMe"]))
                {
                    var cookie1 = new HttpCookie("cp1", userName);
                    var cookie2 = new HttpCookie("cp2", WebCommon.GetMd5String(WebCommon.GetMd5String(userPwd)));
                    cookie1.Expires = DateTime.Now.AddDays(3);
                    cookie1.Expires = DateTime.Now.AddDays(3);
                    Response.Cookies.Add(cookie1);
                    Response.Cookies.Add(cookie2);
                }
                Response.Redirect("04_Test.aspx");
            }
        }
Пример #6
0
        public void ProcessRequest(HttpContext context)
        {
            string username = context.Request["username"];
            string userpass = context.Request["password"];
            string email    = context.Request["email"];
            string tel      = context.Request["tel"];

            UserManager userManager = new UserManager();

            //查找一下用户名
            var isRegister = userManager.Exists(username);

            if (!isRegister)
            {
                User user = new User();
                user.LoginId      = username;
                user.Name         = username;
                user.UserState.Id = 1;
                user.Address      = "某一个未知的地方";
                user.LoginPwd     = WebCommon.GetMd5String(userpass).ToUpper();
                user.Mail         = tel;
                user.Phone        = tel;
                if (userManager.Add(user) > 0)
                {
                    //json的格式非常严格 必须加上爽引号才会解析。。我日了。。

                    //繁琐的验证判断 。。请求返回的格式。乱起八糟的东西。
                    context.Response.Write("{\"code\":1,\"msg\":\"注册成功!\"}");
                }
                else
                {
                    context.Response.Write("{\"code\":-1,\"msg\":\"注册失败!\"}");
                }
            }
            else
            {
                context.Response.Write("{\"code\":1,\"msg\":\"用户已经注册!\"}");
            }
        }
Пример #7
0
        //验证用户名密码(说的一个功能都是一个小的模块里面的功能点有很多)
        //先理解 这个功能  要包含哪些功能 模块 功能点。。数据表的结构 。业务的流程是什么样子的。。然乎就是一点一点的做了
        // 别人是怎么做的。。学习 模仿。。自己实际动手做一遍。。不会的再去看看。。参数一下  但是 不是复制粘贴过来就完事了。

        /// <summary>
        /// 登录的时候校验用户名或者密码
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="msg">消息提示</param>
        /// <returns></returns>
        public bool CheckUserInfo(string userName, string password, out string msg, out User user)
        {
            if (dal.Exists(userName))
            {
                user     = dal.GetModel(userName);
                password = WebCommon.GetMd5String(password);
                if (user.LoginPwd.Equals(password, StringComparison.CurrentCultureIgnoreCase))
                {
                    msg = "用户登录成功!";
                    return(true);
                }
                else
                {
                    msg = "用户名或者密码错误!";
                    return(false);
                }
            }
            else
            {
                msg  = "用户不存在";
                user = null;
                return(false);
            }
        }
Пример #8
0
        //验证用户名密码 设置自动登陆
        public bool CheckUserInfo()
        {
            //测试密码都是123456
            string userName = Request["txtUsername"];
            string password = Request["txtPassword"];

            string vardateCode = Request["txtYzm"];

            //验证码

            if (!WebCommon.CheckValidateCode(vardateCode))
            {
                Msg = "验证码错误!";
                return(false);
            }

            string msg = "";

            BookShop.Model.User user        = null;
            UserManager         userManager = new UserManager();
            bool isLogin = userManager.CheckUserInfo(userName, password, out msg, out user);

            if (isLogin)
            {
                //将每一个对象存储dao session中 。。(里面存储的是字符串类型 还是字符串 是的话如何转换)
                //如果自动登录 想消息记录的 cookie中
                //如果现在自动登录 就用用户名 和两次加密后的密码 存储到cookie中
                // 如果是使用web form 就不用考录请求 相应的东西。。就按钮点击了要怎么样。。发生一个什么什么事件了 又怎么样 这样来考虑
                // 不要太混合起来考虑 容易弄混掉。

                if (!string.IsNullOrEmpty(Request["autoLogin"]))
                {
                    HttpCookie ck1 = new HttpCookie("cp1", userName);
                    //password = ;
                    HttpCookie ck2 = new HttpCookie("cp2", WebCommon.GetMd5String(WebCommon.GetMd5String(password).ToUpper()));
                    ck1.Expires.AddDays(7);
                    ck2.Expires.AddDays(7);
                    Response.Cookies.Add(ck1);
                    Response.Cookies.Add(ck2);
                }
                Session["userInfo"] = user;
                // 登录成功之后回到之前的页面
                if (string.IsNullOrEmpty(Request["HiddenReturnUrl"]))
                {
                    Response.Redirect("/Index.aspx");
                }
                else
                {
                    Response.Redirect(Request["HiddenReturnUrl"]);
                }
            }
            else
            {
                //跳转到提示页面给出提示
                //在页面的某一块位置显示一下消息。。
                //注册一个js 的方法 给出提示
                Msg = msg;
            }
            return(true);
            //userInfo.g
        }