예제 #1
0
        /// <summary>
        /// 登录 并获取信息 存放到session中
        /// </summary>
        /// <param name="domain"></param>
        /// <param name="openId"></param>
        /// <param name="passWord"></param>
        protected async System.Threading.Tasks.Task <bool> LoginSuccess(string domain, string openId, string passWord)
        {
            string info       = domain + "|" + openId + "|" + passWord + "|";
            var    service    = new Services.WxUserService();
            var    tokenValue = await service.GetToken(domain, openId, passWord);

            if (tokenValue.Contains("invalid_client"))
            {
                throw new Comm.YYException.YYException("登录失败" + info + tokenValue + ",请联系管理员");
            }
            //if (tokenValue.Contains("invalid_grant"))
            //{
            //    //ModelState.AddModelError("", "登录失败,请联系管理员");
            //    throw new Comm.YYException.YYException("登录失败"+ info + tokenValue + ",请联系管理员");
            //}

            Session["tokenInfo"]    = "";
            Session["accessToken"]  = "";
            Session["refreshToken"] = "";
            if (tokenValue.Contains("invalid_grant")) //没有权限
            {
                Session["Binding"] = "0";
            }
            else
            {
                Sys.Models.TokenInfo tokenInfo = new Sys.Models.TokenInfo(tokenValue);
                Session["Binding"]      = "1";
                Session["tokenInfo"]    = tokenValue;
                Session["accessToken"]  = tokenInfo.access_token;
                Session["refreshToken"] = tokenInfo.refresh_token;
            }

            return(true);
        }
예제 #2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:

                var tokenValue = await Services.LoginService.GetToken(model.Email, model.Password);

                if (tokenValue.Contains("invalid_grant"))
                {
                    ModelState.AddModelError("", "登录失败,请联系管理员");
                    return(View(model));
                }
                Sys.Models.TokenInfo tokenInfo = new Sys.Models.TokenInfo(tokenValue);
                Session["tokenInfo"]    = tokenValue;
                Session["accessToken"]  = tokenInfo.access_token;
                Session["refreshToken"] = tokenInfo.refresh_token;

                var userValue = await Services.LoginService.GetMe(tokenInfo.access_token, model.Email);

                JObject jo = JObject.Parse(userValue);
                if (Convert.ToBoolean(jo["Error"].ToString()))
                {
                    ModelState.AddModelError("", jo["Msg"].ToString());
                    return(View(model));
                }

                Session["loginUser"] = jo["Info"].ToString();

                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "登录失败,用户名密码错误");
                return(View(model));
            }
        }