不活动后自动从simple-ember-auth / oauth2-server注销

我已经使用password和refresh_token授权在前台和oauth2服务器上实现了一个简单的ember-auth。 当授权令牌即将到期(此时在服务器上设置)时,simple-ember-auth发出刷新令牌请求,并获取新的授权令牌。

这很酷,但是,我需要在一定的不活动时间后自动使会话失效。 目前,OAuth2PasswordGrantAuthenticator似乎无限地发出令牌刷新请求。

我会欢迎任何build议或想法如何实现这一点。

正如@Lux在评论中提到的,你必须实现用户活动检测。 因此,您可以在window元素上观察keypressscrollscroll等事件。 如果这不是关于活动,而只是页面焦点,你可以考虑页面Visibilty Api 。 如果更多的是与你的应用程序交互,也许会观察到像转换一样的事件。

仅当没有任何用户活动时,才使用Ember.debounce调用OAuth2PasswordGrantAuthenticator invalidate()方法。

也许最好在应用程序实例初始化程序中实现。

像这样(未testing):

 // app/instance-initializers/logout-if-inactive.js export function initialize(applicationInstance) { var session = applicationInstance.lookup('service:session'); var logoutAfter = 15 * 60 * 1000 // in milliseconds var logout = function() { Ember.run.debounce(session, 'invalidate', logoutAfter); } window.onmouseevent = logout; window.onkeypress = logout; } export default { name: 'logout-if-inactive', after: 'session', initialize: initialize };