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); }); }
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); }
/// <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()); }
/// <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); }
/// <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); }
/// <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); }