コード例 #1
0
        private string AuthExtendTime(TokenApplyPlace apiToken, string token, int _tokenExtendedTime_, AuthStatus authStatus)
        {
            if (AutoTokenExtended && !String.IsNullOrWhiteSpace(token) && authStatus == AuthStatus.Authorized)
            {
                //無cache 及 過期前 (_tokenExtendedTime/10)秒 提早SQL update
                int SlidingExpiration = -1 * (int)Math.Round(_tokenExtendedTime_ / 10.0);
                if (apiToken == null || apiToken.ExpireDateTime.AddSeconds(SlidingExpiration) < DateTime.Now)
                {
                    using (SqlConnection conn = new SqlConnection(_DBconfig)) {
                        string sqlStr = @"UPDATE TOP (1) dbo.Token
                                        SET RefreshDateTime = GETDATE(),
                                            ExpireDateTime = DATEADD(s, @tokenExtendedTime, GETDATE())
                                        OUTPUT INSERTED.RefreshDateTime, INSERTED.ExpireDateTime
                                        WHERE Token = @token";

                        conn.Open();
                        var updateTmp = conn.Query <TokenApplyPlace>(sqlStr, new { token = token, tokenExtendedTime = _tokenExtendedTime_ }).SingleOrDefault();
                        if (updateTmp != null)
                        {
                            _apiToken.RefreshDateTime = updateTmp.RefreshDateTime;
                            _apiToken.ExpireDateTime  = updateTmp.ExpireDateTime;

                            if (_apiToken != null && _apiToken.ExpireDateTime != null)
                            {
                                CacheHelper.CacheInsert(token, apiToken, apiToken.ExpireDateTime);
                            }
                        }
                    }
                }
                return(_apiToken.ExpireDateTime.ToString("yyyy-MM-ddTHH:mm:ssK"));
            }
            return(null);
        }
        private string AuthExtendTime(DevTokenApplyPlace apiToken, string token, int _tokenExtendedTime_, AuthStatus authStatus)
        {
            if (AutoTokenExtended && !String.IsNullOrWhiteSpace(token) && authStatus == AuthStatus.Authorized)
            {
                //無cache 及 過期前 (_tokenExtendedTime/10)秒 提早SQL update
                int SlidingExpiration = -1 * (int)Math.Round(_tokenExtendedTime_ / 10.0);
                if (apiToken == null || apiToken.expire.AddSeconds(SlidingExpiration) < DateTime.Now)
                {
                    using (SqlConnection conn = new SqlConnection(_DBconfig))
                    {
                        string sqlStr = string.Empty;

                        conn.Open();

                        var updateTmp = conn.Query <DevToken>("CheckAPI_Token_UpDate",
                                                              new { token = token, TokenStatus = apiToken.TokenStatus, _tokenExtendedTime_ = _tokenExtendedTime_ },
                                                              commandType: CommandType.StoredProcedure).FirstOrDefault();

                        if (updateTmp != null)
                        {
                            if (string.Equals(apiToken.TokenStatus, "T", StringComparison.OrdinalIgnoreCase))
                            {
                                _apiToken.expire = updateTmp.token_texpire;
                            }
                            if (string.Equals(apiToken.TokenStatus, "F", StringComparison.OrdinalIgnoreCase))
                            {
                                _apiToken.expire = updateTmp.token_fexpire;
                            }
                            CacheHelper.CacheInsert(token, apiToken, apiToken.expire);
                        }
                    }
                }
                return(_apiToken.expire.ToString("yyyy-MM-ddTHH:mm:ssK"));
            }
            return(null);
        }