Exemplo n.º 1
0
        public static LoginAuthedUserDTO Login(BaseLoginViewModel model)
        {
            LoginAuthedUserDTO resultDtoModel = null;

            switch (model.LoginType)
            {
            case LoginTypeEnum.Password:
                var provider = new PasswordLoginAuthProvider();
                resultDtoModel = provider.Login(model as PasswordLoginViewModel);
                break;

            case LoginTypeEnum.OAuth2:
                var provider_oauth = new OAuthLoginAuthProvider();
                resultDtoModel = provider_oauth.Login(model as OAuthLoginViewModel);
                break;

            case LoginTypeEnum.WeChat:
                ///throw new NotImplementedException();
                break;

            default:
                break;
            }
            if (null != resultDtoModel)
            {
                resultDtoModel.LoginType = model.LoginType;
            }

            return(resultDtoModel);
        }
        public LoginAuthedUserDTO Login(OAuthLoginViewModel model)
        {
            LoginAuthedUserDTO dtoModel = null;



            try
            {
                if (null == model)
                {
                    throw new Exception("授权模型为空!");
                }

                ////注意:这里后期等用户表创建好后,需要去用户表取信息,如果用户表的过期时间到了,那么还需要更新表数据
                ////1 查询用户是否存在
                ////2 不存在插入新的,并生成新的组,并插入access_token日志
                ////3 存在的,那么更新表
                //if (null == userModel)
                //{
                //    //插入模式

                //    //用户模型
                //    userModel = RegisterNewUser(model, out grpId);
                //}
                //else
                //{
                //    //更新模式

                //        grpId = UpdateUserInfo(model, pid, userModel);


                //}

                //model.UserId = userModel.Id;


                //dtoModel = new LoginAuthedUserDTO
                //{
                //    GroupId = 0,//用户所在分组
                //    Platform = model.Platform,
                //    ShopId = model.ShopId,
                //    ShopName = model.ShopName,
                //    UserId = model.UserId,
                //    UserName = model.UserName,
                //    Access_token = model.Access_token,
                //    TokenExpireTime = model.ExpireTime
                //};
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(dtoModel);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 为用户生成一个登录票据
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        private AuthenticationTicket GenerateAuthenticationTicket(LoginAuthedUserDTO user)
        {
            if (null == user)
            {
                throw new Exception("用户不能为空!");
            }
            var now            = DateTime.UtcNow.ToLocalTime();
            var expirationTime = ConfigHelper.AppSettingsConfiguration.GetConfigInt("signTimeOut");// FormsAuthentication.Timeout;

            if (expirationTime <= 0)
            {
                expirationTime = Contanst.Default_SignTimeOut;//分钟
            }
            var expirationTimeSpan = TimeSpan.FromMinutes(expirationTime);
            var ticket             = new AuthenticationTicket()
            {
                User = user, Expiration = now.Add(expirationTimeSpan)
            };

            return(ticket);
        }
        public LoginAuthedUserDTO Login(PasswordLoginViewModel model)
        {
            if (model == null)
            {
                throw new Exception("用户登录对象为空!");
            }

            //UserInfoModel user = null;

            ////---------Todo:通过【统一登录授权管理服务】拉取用户信息
            ////user = dal_Users
            ////      .GetElementsByCondition(x => x.UserName==userName)
            ////      .FirstOrDefault();

            //if (null == user)
            //{
            //    return result;
            //}

            //2 查询出来用户后 对比加密过的授权信息,license key
            //var encryPwd = EncryptionService.CreatePasswordHash(pwd, user.PasswordSalt);
            //if (!string.Equals(encryPwd, user.Password))
            //{
            //    return result;
            //}
            //else
            //{
            //    result = true;
            //}


            var userDto = new LoginAuthedUserDTO {
                UserId = 1, GroupId = 1, UserName = "******"
            };

            return(userDto);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 从验证过的Cookie中获取登录用户信息
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public ILoginAuthedUserDTO GetAuthenticatedUserFromHttpContext()
        {
            LoginAuthedUserDTO userDtoModel = null;

            try
            {
                //从当前上下文先检索认证的用户信息
                if (null != ApplicationContext.Current.User && ApplicationContext.Current.User.Identity.IsAuthenticated)
                {
                    userDtoModel = ApplicationContext.Current.User as LoginAuthedUserDTO;
                }
                if (null != userDtoModel)
                {
                    return(userDtoModel);
                }
                //逆向 支持从 cookie和Header和Form表单读取
                string       encryptedTicket = string.Empty;
                StringValues valuePair;

                //1 尝试从Cookie读取
                if (ApplicationContext.HttpContext.Current.Request.Cookies.ContainsKey(Contanst.Login_Cookie_Client_Key) &&
                    ApplicationContext.HttpContext.Current.GetCookie(Contanst.Login_Cookie_Client_Key).IsNotEmpty())
                {
                    encryptedTicket = ApplicationContext.HttpContext.Current.GetCookie(Contanst.Login_Cookie_Client_Key);
                }

                else if (true == ApplicationContext.HttpContext.Current.Request.Headers.TryGetValue(AuthKey, out valuePair))
                {
                    //2 从头部获取
                    encryptedTicket = valuePair[0].URLDecode().URLDecode();//Note:两次转义用来防止二次编码
                }
                else
                {
                    //3 尝试从Form表单读取
                    encryptedTicket = ApplicationContext.HttpContext.Current.Request.GetForm <string>(AuthKey);
                }


                if (encryptedTicket.IsNullOrEmpty())
                {
                    return(null);
                }
                //解密得到凭据
                var ticket = this.DecryptAuthenticationTicket(encryptedTicket);
                //非法用户--或者登录凭据过期的
                if (null == ticket || null == ticket.User || ticket.Expired)
                {
                    return(null);
                }

                userDtoModel = ticket.User;
                //注册登录用户到上下文信息中
                var cardIdentity = new FlyBirdIdentity(userDtoModel.LoginType, true, userDtoModel.UserName);
                userDtoModel.SetIdentity(cardIdentity);



                #endregion

                ApplicationContext.Current.User = userDtoModel;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(userDtoModel);
        }