我正在尝试在使用 Firebase 时在 flutter 上不活动 x 分钟后实现自动注销功能,身份验证方法是电子邮件。
我在网上搜索过,但我发现的都不是为了 flutter 。
非常感谢任何帮助,谢谢!
最佳答案
您可以对所有 api 实例使用拦截器,例如 this ,而是自定义 onRequest 方法。
思路是:hit api发生时保存时间信息。然后每当另一个命中 api 发生时,检查现在和上次保存时间之间的持续时间。
如果持续时间超过,比方说 5 分钟,那么你可以调用方法注销,否则你可以继续请求
这里有一些片段可以清楚地说明:
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一个更可取
https://stackoverflow.com/questions/58032966/
相关文章:
reactjs - react native : Module RCTLog is not a re
postgresql - 如何为 linux、Fedora 安装 psycopg2
node.js - 将参数/通配符定义为 npm 脚本键/名称的一部分
python - TensorFlow 无法将字符串类型的 Tensor 复制到设备
c# - OmniSharp MSBuild ProjectManager 无法更新我的 .cspr
android-management-api - Google Pixel 设备在发出重启命令后重启
database - 使用扇出写入方法根据隐私设置(PostgreSQL、Redis)更新 Feed