【问题标题】:Is it possible to implement an auto logout feature for inactivity?是否可以为不活动实现自动注销功能?
【发布时间】:2020-01-21 18:48:54
【问题描述】:

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

我在网上搜索过,但我发现的一切都不是为了扑腾。

任何帮助将不胜感激谢谢!

【问题讨论】:

    标签: firebase email flutter logout auto


    【解决方案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());
      

      【讨论】:

      • 这如何帮助检测一段时间内的不活动?
      猜你喜欢
      • 2010-10-17
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2016-11-03
      • 2013-01-12
      相关资源
      最近更新 更多