2017-02-20 52 views
1

我正在使用Wep Api作爲後端編寫基因敲除應用程序。我使用這tutorial來實現令牌承載授權,所以我有訪問令牌,但是登錄功能是在外部提供的。 我需要實現的是在一段時間後註銷,例如1小時,如果所有的時間活動 - 在更長的時間之後 - 10小時。所以,我有我的設置如下圖所示:令牌承載認證 - 在不活動時間後註銷

OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
     { 
      AllowInsecureHttp = true, 
      TokenEndpointPath = new PathString("/token"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromHours(10),  
      Provider = container.Resolve<IOAuthAuthorizationServerProvider>() 
     }; 

和它的作品 - 在10小時後訪問已被撤銷,但如何實現處於非活動狀態1小時後註銷?我想知道某些使用刷新令牌或實施會話到應用程序。

+0

你想用刷新標記來實現什麼。 –

回答

0

如何實現1小時不活動後註銷?

你可以嘗試這樣的事情。

<script type="text/javascript"> 
var timeout = 3600000; // Timeout in 60 mins. 

var timeoutTimer; 

// Start timers. 
function StartTimers() {  
    timeoutTimer = setTimeout("Timeout()", timeout); 
} 

// Reset timers. 
function ResetTimers() { 
    clearTimeout(timeoutTimer); 
    StartTimers(); 
} 

function Timeout() { 
    // Your logout logic. 
} 

</script> 

<body onload="StartTimers();" onmousemove="ResetTimers();"> 

</body> 

它基本上是在頁面加載它啓動定時器和的OnMouseMove ITE復位定時器和上沒有任何活動它觸發超時,你可以把你的註銷邏輯。

+0

當然,我已經實現了這樣的,但與會議的使用情況和活動​​的信息。問題是access_token在服務器端仍然有效 – Pawel

+0

它將一直保持有效,直到其到期時間結束。保持短暫的令牌過期並在註銷時清除access_token ...您在創建令牌時定義的所有內容都存儲在access_token本身中,並且服務器上不存儲任何內容。看到這個更多的參考https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/individual-accounts-in-web-api和這個http://stackoverflow.com/questions/ 7030694/why-do-access-tokens-expire/7035926#7035926 –

+0

@VivekSingh但是如何在服務器端清除令牌時,它們是針對單個用戶ID的多個令牌,意味着用戶使用Web應用和移動應用時具有相同的後端API。 – Dragon