是否可以为不活动实现自动注销功能?
Posted
技术标签:
【中文标题】是否可以为不活动实现自动注销功能?【英文标题】:Is it possible to implement an auto logout feature for inactivity? 【发布时间】:2020-01-21 18:48:54 【问题描述】:我正在尝试在使用 Firebase 时在 x 分钟不活动后实现自动注销功能,身份验证方法是电子邮件。
我在网上搜索过,但我发现的一切都不是为了扑腾。
任何帮助将不胜感激谢谢!
【问题讨论】:
【参考方案1】:您可以对所有 api 实例使用拦截器,例如 this,但可以自定义 onRequest 方法。
这个想法是:在命中 api 发生时保存时间信息。然后每当发生另一个命中 api 时,检查从现在到上次保存的时间之间的持续时间。
如果持续时间长于,比如说5分钟,那么你可以调用方法logout,否则你可以继续请求
这里有一些sn-p来说明:
Future<Dio> getApiClient() async
_dio.interceptors.clear();
_dio.interceptors
.add(InterceptorsWrapper(onRequest: (RequestOptions options)
// Do something before request is sent
var pref = await SharedPreferences.getInstance();
var timeNow = DateTime.now().millisecondsSinceEpoch;
var lastHitApi = pref.getInt(LAST_HIT_API);
var delay = timeNow - lastHitApi;
pref.setInt(LAST_HIT_API, timeNow);
if (delay > DELAY_MAX)
// do logout here
return options;
,onResponse:(Response response)
// Do something with response data
return response; // continue
, onError: (DioError error) async
// Do something with response error
));
_dio.options.baseUrl = baseUrl;
return _dio;
编辑:我猜this 一个更可取
【讨论】:
【参考方案2】:设置超时时间和调用注销功能
Timer(Duration(seconds: 5), () => logOut());
【讨论】:
这如何帮助检测一段时间内的不活动?以上是关于是否可以为不活动实现自动注销功能?的主要内容,如果未能解决你的问题,请参考以下文章
当用户在页面 javascript 或 php 中不活动 3 分钟时自动注销