public async Task <IActionResult> Login(MoLoginUser loginUser)
        {
            if (ModelState.IsValid == false || loginUser == null)
            {
                this.MsgBox("验证失败,请重试!");
                return(View());
            }

            User user;

            user = await _uf.UserRepository.GetUser(loginUser.UserName, loginUser.UserPwd);

            if (user == null)
            {
                this.MsgBox("账号或密码错误!");
                return(View(typeof(MoLoginUser), loginUser));
            }
            else if (user.UserStatus == UserStatus.未登录)
            {
                this.MsgBox("该账号已被禁用,或许你可以尝试重新注册一个账号!");
                return(View());
            }

            user.UserStatus = (int)UserStatus.启用;
            _uf.UserRepository.Update(user);

            var userToRole = _uf.UserToRoleRepository.GetAll(x => x.UserId == user.Id);
            await _uf.SaveChangesAsync();

            var userInfo = new MoUserInfo
            {
                Id         = user.Id,
                UserName   = user.UserName,
                Email      = user.Email,
                HeadPhoto  = user.HeadPhoto,
                UserStatus = (int)user.UserStatus,
                Roles      = userToRole.Any(x => x.Role.RoleName.Equals(RoleType.SuperAdmin.ToString(),
                                                                        StringComparison.OrdinalIgnoreCase)) ? RoleType.SuperAdmin.ToString() :
                             userToRole.Any(x => x.Role.RoleName.Equals(RoleType.Admin.ToString(), StringComparison.OrdinalIgnoreCase)) ?
                             RoleType.Admin.ToString() : RoleType.User.ToString()
            };

            HttpContext.AddUserInfo(userInfo);

            if (String.IsNullOrWhiteSpace(loginUser.ReturnUrl))
            {
                return(Redirect("http://localhost:17758/home/index"));
            }
            else
            {
                return(Redirect(loginUser.ReturnUrl));
            }
        }
        public async Task <IActionResult> Login([Bind("UserName,UserPwd,ReturnUrl")] MoLoginUser loginUser)
        {
            if (ModelState.IsValid)
            {
                #region 验证
                var md5Pwd   = PublicClass._Md5(loginUser.UserPwd.Trim());
                var userInfo = await _context.ToUserInfo.SingleOrDefaultAsync(b =>
                                                                              b.UserName.Equals(loginUser.UserName, StringComparison.CurrentCultureIgnoreCase) &&
                                                                              b.UserPwd.Equals(md5Pwd));

                if (userInfo == null)
                {
                    this.MsgBox("账号或密码错误!");
                    return(View(loginUser));
                }
                else if (userInfo.Status == (int)EnumHelper.EmUserStatus.禁用)
                {
                    this.MsgBox("该账号已被禁用,或许你可以尝试重新注册一个账号!");
                    return(View(loginUser));
                }
                #endregion

                #region 更新登录信息
                userInfo.Ips       = this.GetUserIp();
                userInfo.LoginTime = DateTime.Now;
                userInfo.LevelNum += (int)EmLevelNum.登录;

                //记录session
                var moUserInfo = new MoUserInfo
                {
                    Id       = userInfo.Id,
                    UserName = userInfo.UserName,
                    NickName = userInfo.NickName,
                    Addr     = userInfo.Addr,
                    Birthday = userInfo.Birthday,

                    Blog       = userInfo.Blog,
                    CreateTime = userInfo.CreateTime,
                    Email      = userInfo.Email,
                    HeadPhoto  = userInfo.HeadPhoto,
                    Introduce  = userInfo.Introduce,

                    Ips      = userInfo.Ips,
                    LevelNum = userInfo.LevelNum,
                    Sex      = userInfo.Sex,
                    Tel      = userInfo.Tel,
                    Status   = userInfo.Status,

                    LoginTime = Convert.ToDateTime(userInfo.LoginTime)
                };
                HttpContext.Session.Set <MoUserInfo>(HttpContext.Session.SessionKey(), moUserInfo);

                if (!string.IsNullOrWhiteSpace(moUserInfo.Ips))
                {
                    _context.ToUserLog.Add(new ToUserLog
                    {
                        CodeId     = (int)EmLogCode.登录,
                        CreateTime = DateTime.Now,
                        Des        = $"IP:{moUserInfo.Ips},登录时间:{moUserInfo.LoginTime.ToString("yyyy-MM-dd HH:mm")}",
                        UserId     = userInfo.Id
                    });
                }

                _context.ToUserLog.Add(new ToUserLog
                {
                    CodeId     = (int)EmLogCode.积分,
                    CreateTime = DateTime.Now,
                    Des        = $"【登录】  +{(int)EmLevelNum.登录}",
                    UserId     = userInfo.Id
                });

                await _context.SaveChangesAsync();

                if (string.IsNullOrWhiteSpace(loginUser.ReturnUrl))
                {
                    return(RedirectToAction(nameof(HomeController.Index), "Home"));
                }
                else
                {
                    return(Redirect(loginUser.ReturnUrl));
                }
                #endregion
            }
            return(View(loginUser));
        }