令牌持有者身份验证 - 不活动时间后注销
Posted
技术标签:
【中文标题】令牌持有者身份验证 - 不活动时间后注销【英文标题】:Token bearer authentication - logout after inactivity time 【发布时间】:2017-07-10 02:02:01 【问题描述】:我正在使用 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 小时不活动后实现注销?我想知道刷新令牌的某些用法或在应用程序中实现会话。
【问题讨论】:
你想用刷新令牌实现什么..?? 【参考方案1】:如何实现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 重置计时器,并且在没有活动时它会触发超时,您可以在其中放置注销逻辑。
【讨论】:
当然,我已经实现了这样的东西,但是使用了会话使用情况和有关活动的信息。问题是 access_token 在服务器端仍然有效 它将一直有效,直到过期时间结束。保持令牌在短时间内过期并在注销时清除 access_token ...您在创建令牌时定义的所有内容都存储在 access_token 本身中,并且没有任何内容存储在服务器上。请参阅此以获取更多参考docs.microsoft.com/en-us/aspnet/web-api/overview/security/… 和此***.com/questions/7030694/why-do-access-tokens-expire/…以上是关于令牌持有者身份验证 - 不活动时间后注销的主要内容,如果未能解决你的问题,请参考以下文章
Sanctum Laravel 8 用于 API 身份验证的问题(不会在注销时删除令牌)
Web API 2,OWIN 身份验证,SignOut 不注销
在 OpenStack Horizon 中保持更长时间的身份验证