flutter

Flutter Dio网络请求cookie管理,实现自动登录

2020-09-05  本文已影响0人  技术混子

倒入依赖:
cookie_jar: 1.0.1
dio_cookie_manager: 1.0.0

由于在flutter中只简单对cookie做save处理会在app退出时清除cookie信息,导致第二次获取cookie为空,无法实现自动登录,所以这里要对cookie做点处理

class Cook {
 //改为使用 PersistCookieJar,在文档中有介绍,PersistCookieJar将 cookie保留在文件中,因此,如果应用程序退出,则cookie始终存在,除             非显式调用delete
static PersistCookieJar _cookieJar;
static Future<PersistCookieJar> get cookieJar async {
// print(_cookieJar);
if (_cookieJar == null) {
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;
  print('获取的文件系统目录: ' + appDocPath);
  _cookieJar = new PersistCookieJar(dir: appDocPath);
}
return _cookieJar;
}
}

在需要需要使用的dart文件中引入class Cook{...}
使用方法:
第一次登录时在请求成功回调中保存cookie登录信息 Uri.parse('url'),url得是登录接口url

 //获取cookies
  List<Cookie> cookies = (await Cook.cookieJar).loadForRequest(
      Uri.parse('http://xxx.xxx.xx.xx:xxxx/xx/login'));
  //Save cookies
  (await Cook.cookieJar)
      .saveFromResponse(Uri.parse('http://xxx.xxx.xx.xx:xxxx/xx/login'), cookies);

  print('登录cookie====>,$cookiess');

之后在首页请求中加入如下代码

  dios.interceptors.add(CookieManager((await Cook.cookieJar)));

也是第一次接触cookie,具体细节慢慢研究!!!

上一篇 下一篇

猜你喜欢

热点阅读