• 用户登录


    用户登录:
            [HttpPost]
            [CustomAllowAnonymous]//允许匿名登录(这个是自定义的)
            public ActionResult Login(string name, string password, string verify)
            {
                string formName = base.HttpContext.Request.Form["Name"];
    
                var result = base.HttpContext.Login(name, password, verify);
                if (result == UserManager.LoginResult.Success)
                {
                    if (base.HttpContext.Session["CurrentUrl"] != null)
                    {
                        string url = base.HttpContext.Session["CurrentUrl"].ToString();
                        base.HttpContext.Session.Remove("CurrentUrl");
                        return base.Redirect(url);
                    }
                    else
                        return base.Redirect("/Home/Index");
                }
                else
                {
                    ModelState.AddModelError("failed", result.GetRemark());
                    return View();
                }
            }
    
    登录验证代码
    public static class UserManager
        {
            private static Logger logger = new Logger(typeof(UserManager)); 
            /// <summary>
            /// 用户登录验证
            /// </summary>
            /// <param name="name"></param>
            /// <param name="password"></param>
            /// <param name="verifyCode"></param>
            /// <returns></returns>
            public static LoginResult Login(this HttpContextBase context, string name, string password, string verifyCode)
            {
                if (context.Session["CheckCode"] != null
                    && !string.IsNullOrWhiteSpace(context.Session["CheckCode"].ToString())
                    && context.Session["CheckCode"].ToString().Equals(verifyCode, StringComparison.CurrentCultureIgnoreCase))
                {
                    using (IUserCompanyService servcie = DIFactory.GetContainer().Resolve<IUserCompanyService>())//查找数据库
                    {
                        User user = servcie.Set<User>().FirstOrDefault(u => u.Name.Equals(name) || u.Account.Equals(name) || u.Mobile.Equals(name) || u.Email.Equals(name));//账号查找
                        if (user == null)
                        {
                            return LoginResult.NoUser;
                        }
                        else if (!user.Password.Equals(MD5Encrypt.Encrypt(password)))
                        {
                            return LoginResult.WrongPwd;
                        }
                        else if (user.State == 1)
                        {
                            return LoginResult.Frozen;
                        }
                        else
                        {
                            //登录成功  写cookie session
                            CurrentUser currentUser = new CurrentUser()
                            {
                                Id = user.Id,
                                Name = user.Name,
                                Account = user.Account,
                                Email = user.Email,
                                Password = user.Password,
                                LoginTime = DateTime.Now
                            };
                               
                            #region Cookie
                            //context.Request.Cookies
    
                            //HttpCookie cookie = context.Request.Cookies.Get("CurrentUser");
                            //if (cookie == null)
                            //{
                            HttpCookie myCookie = new HttpCookie("CurrentUser");
                            myCookie.Value = JsonHelper.ObjectToString<CurrentUser>(currentUser);
                            myCookie.Expires = DateTime.Now.AddMinutes(5);
                            //5分钟后  硬盘cookie
                            //不设置就是内存cookie--关闭浏览器就丢失
                            //改成过期 -1 过期
                            //修改cookie:不能修改,只能起个同名的cookie
    
                            //myCookie.Domain//设置cookie共享域名
                            //myCookie.Path//指定路径能享有cookie
                            context.Response.Cookies.Add(myCookie);//一定要输出
                            //}
                            //前端只能获取name-value
                            #endregion Cookie
    
                            #region Session
                            //context.Session.RemoveAll();
                            var sessionUser = context.Session["CurrentUser"];
                            context.Session["CurrentUser"] = currentUser;
                            context.Session.Timeout = 3;//minute  session过期等于Abandon
                            #endregion Session
    
                            logger.Debug(string.Format("用户id={0} Name={1}登录系统", currentUser.Id, currentUser.Name));
                            return LoginResult.Success;
                        }
                    }
                    //服务端是只靠session--安全
                    //cookie一直做登陆
                    //cookie+session:验证用session,没有session就看cookie(cookie写个时间)
                }
                else
                {
                    return LoginResult.WrongVerify;//这是一个枚举,想返回什么,自定义去吧
                }
            }
        }
    
    用户退出:
            public ActionResult Logout()
            {
                this.HttpContext.UserLogout();
                return RedirectToAction("Index", "Home"); ;
            }
    
            public static void UserLogout(this HttpContextBase context)
            {
                #region Cookie
                HttpCookie myCookie = context.Request.Cookies["CurrentUser"];
                if (myCookie != null)
                {
                    myCookie.Expires = DateTime.Now.AddMinutes(-1);//设置过过期
                    context.Response.Cookies.Add(myCookie);
                }
    
                #endregion Cookie
    
                #region Session
                var sessionUser = context.Session["CurrentUser"];
                if (sessionUser != null && sessionUser is CurrentUser)
                {
                    CurrentUser currentUser = (CurrentUser)context.Session["CurrentUser"];
                    logger.Debug(string.Format("用户id={0} Name={1}退出系统", currentUser.Id, currentUser.Name));
                }
                context.Session["CurrentUser"] = null;//表示将制定的键的值清空,并释放掉,
                context.Session.Remove("CurrentUser");
                context.Session.Clear();//表示将会话中所有的session的键值都清空,但是session还是依然存在,
                context.Session.RemoveAll();//
                context.Session.Abandon();//就是把当前Session对象删除了,下一次就是新的Session了   
                #endregion Session
            }
    

      

  • 相关阅读:
    Magento速度优化
    magento-connect-manage出现404或者500内部错误的解决办法
    magento -- 给后台分类管理页的分类商品加一栏商品类型
    magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
    magento -- 如何为商品分类(category)添加自定义属性
    magento -- 如何改善前台图片质量
    安装Let's Encrypt SSL证书
    centos版本查看
    ps
    设置桥接虚拟网卡
  • 原文地址:https://www.cnblogs.com/LJP-JumpAndFly/p/12251356.html
Copyright © 2020-2023  润新知