コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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");///登录超时,请重新登录!
        }
コード例 #4
0
ファイル: EffiprozRobot.cs プロジェクト: lanicon/DBStudio
        /// <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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        //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}"));
            }
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
ファイル: UserTokenManager.cs プロジェクト: tomfang678/ZhouJF
        /// <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]);
        }
コード例 #9
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;
            }
コード例 #10
0
 public virtual bool ChangePassword(UserTokenInfo info)
 {
     throw new SubClassMustImplementException();
 }
コード例 #11
0
 private GetTokenResponseBase(bool success, string message, UserTokenInfo userTokenInfo) : base(success, message)
 {
     UserTokenInfo = userTokenInfo;
 }
コード例 #12
0
 public GetTokenResponseBase(UserTokenInfo userTokenInfo) : this(true, null, userTokenInfo)
 {
 }
コード例 #13
0
ファイル: UserTokenManager.cs プロジェクト: tomfang678/ZhouJF
 private int Add(UserTokenInfo item)
 {
     _da.Delete(item.USERID, DataBaseResource.Write);
     return(_da.Insert(item));
 }
コード例 #14
0
ファイル: UserTokenManager.cs プロジェクト: tomfang678/ZhouJF
 /// <summary>
 /// 延长TOKEN有效期
 /// </summary>
 public void ExtendExpireTime(UserTokenInfo userToken)
 {
     _da.Update(userToken, DataBaseResource.Write);
 }