Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 是否可以为非活动状态实现自动注销功能?_Firebase_Email_Flutter_Logout_Auto - Fatal编程技术网

Firebase 是否可以为非活动状态实现自动注销功能?

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

我正在尝试在使用Firebase时,在颤振上不活动x分钟后实现自动注销功能,身份验证方法是电子邮件

我已经在网上搜索过了,但我找到的东西都不适合弗利特


任何帮助都将不胜感激,谢谢

设置超时持续时间和呼叫注销功能

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;
}


编辑:我想其中一个更可取

这如何帮助检测一段时间内的不活动?这如何帮助检测一段时间内的不活动?