Firebase 是否可以为非活动状态实现自动注销功能?
我正在尝试在使用Firebase时,在颤振上不活动x分钟后实现自动注销功能,身份验证方法是电子邮件 我已经在网上搜索过了,但我找到的东西都不适合弗利特Firebase 是否可以为非活动状态实现自动注销功能?,firebase,email,flutter,logout,auto,Firebase,Email,Flutter,Logout,Auto,我正在尝试在使用Firebase时,在颤振上不活动x分钟后实现自动注销功能,身份验证方法是电子邮件 我已经在网上搜索过了,但我找到的东西都不适合弗利特 任何帮助都将不胜感激,谢谢 设置超时持续时间和呼叫注销功能 Timer(Duration(seconds: 5), () => logOut()); 设置超时持续时间和呼叫注销功能 Timer(Duration(seconds: 5), () => logOut()); 您可以对所有api实例(如)使用拦截器,但可以自定义onRe
任何帮助都将不胜感激,谢谢 设置超时持续时间和呼叫注销功能
Timer(Duration(seconds: 5), () => logOut());
设置超时持续时间和呼叫注销功能
Timer(Duration(seconds: 5), () => logOut());
您可以对所有api实例(如)使用拦截器,但可以自定义onRequest方法 其思想是:在发生hit api时节省时间信息。然后,每当出现另一个命中api时,检查从现在到上次保存时间之间的持续时间 如果持续时间超过,比如说5分钟,那么可以调用方法logout,否则可以继续请求 下面是一些代码片段,以明确说明:
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;
Future getApiClient()异步{
_dio.interceptors.clear();
_拦截机
.add(拦截器包装器(onRequest:(RequestOptions){
//在发送请求之前做些什么
var pref=await SharedPreferences.getInstance();
var timeNow=DateTime.now().millissecondssinceepoch;
var lastHitApi=pref.getInt(上次命中API);
var delay=timeNow-lastHitApi;
pref.setInt(上次命中API,timeNow);
如果(延迟>延迟最大值){
//请在这里注销
}
返回选项;
},onResponse:(Response-Response){
//处理响应数据
返回响应;//继续
},onError:(DioError错误)异步{
//处理响应错误
}));
_dio.options.baseUrl=baseUrl;
返回_dio;
}
编辑:我想有一种方法更可取您可以对所有api实例使用拦截器,例如,但可以自定义onRequest方法 其思想是:在发生hit api时节省时间信息。然后,每当出现另一个命中api时,检查从现在到上次保存时间之间的持续时间 如果持续时间超过,比如说5分钟,那么可以调用方法logout,否则可以继续请求 下面是一些代码片段,以明确说明:
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;
Future getApiClient()异步{
_dio.interceptors.clear();
_拦截机
.add(拦截器包装器(onRequest:(RequestOptions){
//在发送请求之前做些什么
var pref=await SharedPreferences.getInstance();
var timeNow=DateTime.now().millissecondssinceepoch;
var lastHitApi=pref.getInt(上次命中API);
var delay=timeNow-lastHitApi;
pref.setInt(上次命中API,timeNow);
如果(延迟>延迟最大值){
//请在这里注销
}
返回选项;
},onResponse:(Response-Response){
//处理响应数据
返回响应;//继续
},onError:(DioError错误)异步{
//处理响应错误
}));
_dio.options.baseUrl=baseUrl;
返回_dio;
}
编辑:我想其中一个更可取这如何帮助检测一段时间内的不活动?这如何帮助检测一段时间内的不活动?