2017-02-20 49 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