Beispiel #1
0
        private void SaveValidate(string state, string scope, LoginInfoDto loginInfo)
        {
            //分配sessionId
            loginInfo.Code = this.SessionChangeDB.Pop(state);
            if (string.IsNullOrWhiteSpace(loginInfo.Code))
            {
                //TODO:这个地方有时候会有问题,要加入日志
                throw new Exception("Code不能为空");
            }
            System.Threading.Tasks.Parallel.Invoke(() =>
            {
                OAuthValidateDto oAuthValidateDto = new OAuthValidateDto
                {
                    Code          = loginInfo.Code,
                    EmployeeID    = loginInfo.EmployeeID,
                    Password      = loginInfo.Password,
                    ServiceNumber = loginInfo.ServiceNumber,
                    CodeExpire    = 1200,    //默认值
                    CreatedBy     = "admin", //TODO:待修改
                    ModifiedBy    = "admin", //TODO:待修改
                    State         = state,
                    Token         = Serializer.ToJson(Token),
                    Scope         = scope,
                    AccessToken   = Serializer.ToJson(AccessToken)
                };

                OAuthValidateService.Save(oAuthValidateDto);
            }, () =>
            {
                SaveSession(loginInfo.Code);
            });
        }
Beispiel #2
0
        public bool SSOLogout(LoginInfoDto loginInfo)
        {
            bool result = false;

            var oAuthValidateDto = GetOAuthValidateDto(loginInfo.AccessToken);

            if (oAuthValidateDto != null)
            {
                SessionModel sessionModel = new SessionModel()
                {
                    SessionID = oAuthValidateDto.Code
                };

                if (sessionManager.IsExist(sessionModel))
                {
                    result = sessionManager.RemoveSession(sessionModel);
                }
                else
                {
                    result = true;
                }
                if (result)
                {
                    OAuthValidateDto dto = new OAuthValidateDto()
                    {
                        Code = oAuthValidateDto.Code
                    };

                    result = oAuthValidateRepository.Delete(dto.ToEntity()) > 0;
                }
            }
            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 是否已经登录
        /// </summary>
        /// <param name="dto">登录验证信息</param>
        /// <returns></returns>
        private OAuthValidateDto IsLogin(OAuthValidateDto dto)
        {
            var model = Repository.Queryable().FirstOrDefault(m => m.ServiceNumber == dto.ServiceNumber &&
                                                              m.EmployeeID == dto.EmployeeID &&
                                                              m.State == dto.State);

            return(model?.ToDto());
        }
Beispiel #4
0
        /// <summary>
        /// 保存验证成功后的你登录信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public bool Save(OAuthValidateDto dto)
        {
            //是否已经登录
            bool result     = false;
            var  loginModel = IsLogin(dto);

            if (loginModel != null)
            {
                //
                Repository.Delete(loginModel.Code);
            }
            result = Repository.Add(dto.ToEntity()) > 0;

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// 根据code获取AccessToken信息
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public OAuthValidateDto GetOAuthTokenByCode(string clientId, string clientSecret,
                                                    string redirectUrl, string code)
        {
            OAuthValidateDto oAuthValidateDto = null;
            var oAuthServiceDto = GetOAuthServiceInfo(clientId, clientSecret, redirectUrl);

            if (oAuthServiceDto != null)
            {
                oAuthValidateDto = GetOAuthValidateInfo(code);
                if (oAuthValidateDto == null)
                {
                    throw new Exception("Session不存在");
                }
            }
            else
            {
                throw new Exception("该ClientID对应值未纳入验证管理");
            }
            return(oAuthValidateDto);
        }
Beispiel #6
0
        /// <summary>
        /// 通过Code获取OAuth验证信息
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        private OAuthValidateDto GetOAuthValidateInfo(string code)
        {
            OAuthValidateDto oAuthValidateDto = null;

            var session = SessionManager.GetSession(new SessionModel()
            {
                SessionID = code
            });

            if (session != null)
            {
                var entity = Repository.Queryable().FirstOrDefault(m => m.Code == code);
                if (entity != null)
                {
                    oAuthValidateDto = entity.ToDto();
                }
            }
            else
            {
                DeleteOAuthValidate(code);
            }

            return(oAuthValidateDto);
        }