/// <summary> /// 是否超时 /// </summary> /// <param name="token"></param> /// <returns></returns> public bool IsTimeOut(string token) { ///TOKEN超时时间 int timeOutMinute = 10; UserTokenInfo info = dal.GetInfo(token); if (info == null) { return(true); } TimeSpan ts = DateTime.Now - info.ModifyDate.GetValueOrDefault(); ///已超时 if (ts.TotalMinutes > timeOutMinute) { dal.UpdateInfo("[DISABLE_DATE]=GETDATE(),[VALID_FLAG]=0", info.Id); return(true); } else { if (dal.UpdateInfo("[MODIFY_DATE]=GETDATE()", info.Id) == 0) { return(true); } } return(false); }
IEnumerator <bool> GetTokenInfo() { if (string.IsNullOrEmpty(m_Token)) { yield break; } var url = string.Format(k_GetTokenInfoUrlFormat, m_Token); var storageModule = ModuleLoaderCore.instance.GetModule <GenesisCloudStorageModule>(); bool?tokenIsValid = null; m_Requests.Push(storageModule.GetRequest(url, (success, response) => { m_Requests.Pop(); if (!success) { Debug.LogError(response); tokenIsValid = false; return; } m_UserTokenInfo = TryParse <UserTokenInfo>(response); tokenIsValid = m_UserTokenInfo != null && m_UserTokenInfo.access_token == m_Token; })); while (tokenIsValid == null) { yield return(false); } yield return(tokenIsValid.Value); }
/// <summary> /// 获取USER_FID /// </summary> /// <param name="token"></param> /// <returns></returns> public Guid GetUserFid(string token) { ///获取有效令牌 UserTokenInfo info = dal.GetInfo(token); if (info == null) { return(Guid.Empty); } if (DateTime.Now < info.DisableDate.GetValueOrDefault()) { return(info.Fid.GetValueOrDefault()); } dal.UpdateInfo("[VALID_FLAG] = 0,[MODIFY_DATE] = GETDATE(),[MODIFY_USER] = N'#VALID_TOKEN'", info.Id); throw new Exception("MC:0x00000092");///登录超时,请重新登录! }
/// <summary> /// /// </summary> /// <param name="info"></param> /// <returns></returns> public sealed override bool ChangePassword(UserTokenInfo info) { bool ret = false; try { EfzConnection conn = (EfzConnection)this.GetConnection(); conn.ChangePassword(info.NewPassword); ret = true; } catch (Exception ee) { ret = false; Debug.WriteLine(ee.Message); } return(ret); }
/// <summary> /// Generates a random token code for a single user. /// </summary> /// <param name="userName">The user name.</param> /// <returns>The token code.</returns> public string GenerateTokenCode(string userName) { string tokenCode = Guid.NewGuid().ToString(); if (userTokens.ContainsKey(userName)) { userTokens[userName].Timer.Dispose(); userTokens.Remove(userName); } userTokens[userName] = new UserTokenInfo() { Timer = new Timer(new TimerCallback(invalidateTokenCode), userName, new TimeSpan(0, 2, 0), new TimeSpan(0, 2, 0)), TokenCode = tokenCode }; return(tokenCode); }
//https://stackoverflow.com/questions/14104865/how-can-i-use-debug-write-with-dynamic-data public async Task <GetTokenResponseBase> GetTokenInfoAsyncByLocMai(string email, string password) { try { var response = await TokenGetter.RequestNew(email, password); string result = await response.Content.ReadAsStringAsync(); dynamic resultJson = JsonConvert.DeserializeObject(result); string resultString = resultJson.ToString() as string; Debug.WriteLine(resultString); try { var tokenInfo = new UserTokenInfo() { AccessToken = resultJson["access_token"].ToString() as string, SessionKey = resultJson["session_key"].ToString() as string, Uid = resultJson["uid"].ToString() as string, Secret = resultJson["secret"].ToString() as string, Confirmed = bool.Parse(resultJson["confirmed"].ToString() as string), Identifier = resultJson["identifier"].ToString() as string }; return(new GetTokenResponseBase(tokenInfo)); } catch (RuntimeBinderException) { dynamic errorData = JsonConvert.DeserializeObject(resultJson["error_data"].ToString()); return(new GetTokenResponseBase(errorData["error_message"].ToString() as string)); } } catch (Exception ex) { Debug.WriteLine(ex); return(new GetTokenResponseBase($"An error occurred when creating new token: {ex.Message}")); } }
/// <summary> /// GetNewToken /// </summary> /// <param name="userFid"></param> /// <returns></returns> public string GetNewToken(Guid userFid) { ///TOKEN超时时间 string userTokenExpireMinute = new ConfigDAL().GetValueByCode("USER_TOKEN_EXPIRE_MINUTE"); if (!int.TryParse(userTokenExpireMinute, out int tokenExpireMinute)) { tokenExpireMinute = 120; } ///获取有无未过期的TOKEN UserTokenInfo info = new UserTokenDAL().GetInfo(userFid); if (info == null) { info = new UserTokenInfo(); info.Fid = Guid.NewGuid(); ///GUID去掉- info.Token = info.Fid.GetValueOrDefault().ToString().Replace("-", string.Empty); /// info.DisableDate = DateTime.Now.AddMinutes(tokenExpireMinute); info.CreateDate = DateTime.Now; info.CreateUser = "******"; info.ValidFlag = true; if (dal.Add(info) == 0) { return(string.Empty); } return(info.Token); } /// dal.UpdateInfo("" + "[DISABLE_DATE] = N'" + DateTime.Now.AddMinutes(tokenExpireMinute) + "'," + "[MODIFY_DATE] = GETDATE()," + "[MODIFY_USER] = N'#TOKEN_CREATER'", info.Id); return(info.Token); }
/// <summary> /// 获取TOKEN /// </summary> /// <param name="userID"></param> /// <returns></returns> public UserTokenInfo GetItemById(int userID, bool IsExpireCreate = true) { var userToken = new UserTokenInfo(); //配置时间没有,直接创建TOKEN if (string.IsNullOrEmpty(TokenExprire)) { userToken = CreateUserToken(userID); Add(userToken); return(userToken); } var filters = new List <QueryParameterInfo> { new QueryParameterInfo("USERID", userID, DataFilterConditions.Equal) }; var list = _da.GetItems(filters, DataBaseResource.Read); //当前用户没有TOKEN记录,创建TOKEN if (list == null || list.Count < 1) { userToken = CreateUserToken(userID); Add(userToken); return(userToken); } //TOKEN超过有效期将删除重新创建TOKEN if (IsExpireCreate) { if (list[0].CREATE_TIME.AddMinutes(Convert.ToInt32(TokenExprire)) < DateTime.Now) { userToken = CreateUserToken(userID); Add(userToken); return(userToken); } } //在时间范围的TOKEN直接返回 return(list[0]); }
private static void SetIdentities(ActionContext actionContext, UserTokenInfo userTokenInfo) { if (userTokenInfo == null) { return; } var claims = new List <Claim> { new Claim(ClaimTypes.Name, userTokenInfo.Username), new Claim(ClaimTypes.Role, userTokenInfo.UserLevel.ToString()), new Claim("username", userTokenInfo.Username), new Claim("departmentcode", userTokenInfo.DepartmentCode), new Claim("token", userTokenInfo.TokenGuid.ToString()) }; var identity = new ClaimsIdentity(claims, "token"); var principal = new ClaimsPrincipal(identity); actionContext.HttpContext.User.AddIdentity(identity); Thread.CurrentPrincipal = principal; }
public virtual bool ChangePassword(UserTokenInfo info) { throw new SubClassMustImplementException(); }
private GetTokenResponseBase(bool success, string message, UserTokenInfo userTokenInfo) : base(success, message) { UserTokenInfo = userTokenInfo; }
public GetTokenResponseBase(UserTokenInfo userTokenInfo) : this(true, null, userTokenInfo) { }
private int Add(UserTokenInfo item) { _da.Delete(item.USERID, DataBaseResource.Write); return(_da.Insert(item)); }
/// <summary> /// 延长TOKEN有效期 /// </summary> public void ExtendExpireTime(UserTokenInfo userToken) { _da.Update(userToken, DataBaseResource.Write); }