我正在尝试在使用 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一个更可取
关于firebase - 是否可以为不活动实现自动注销功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032966/