Size: a a a

Dart & Flutter по-русски

2020 November 27

AD

Alexandr Drobyshev in Dart & Flutter по-русски
сайт не принимает )
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
а нет не первый) просто всем пофиг
год висит иссуй
источник

AU

Andrey Unger in Dart & Flutter по-русски
Alexandr Drobyshev
а нет не первый) просто всем пофиг
год висит иссуй
сделай им PR) а то так и не раздупляться
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
да и в обратную сторону не понятно как слать
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
мне надо много заголовков слать с одним имнеем
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
а у них принимате мапу
источник

AU

Andrey Unger in Dart & Flutter по-русски
что-то я смотрю у них там ишью на тему set-cookie прям полно
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
да там не ток в куках дело
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
любой заголовк може быть больше 1го раза в теории
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
а тут на мапах и оптравка и прием - а значит не может
источник

SS

Stefan Stefan in Dart & Flutter по-русски
я нормально логинюсь на своем бекенде и тоже бекенд на джанго и по хорошему токен нужно пихать в header, а не в куки, и под каждый запрос делаю простой перехватчик
источник

SS

Stefan Stefan in Dart & Flutter по-русски
Future onRequest(RequestOptions options) async {
   final _logincontroller = Get.find<LoginController>();
   final _secureStorage = Get.find<FlutterSecureStorage>();
   final SharedSettingsService _sharedsettingsservice = Get.find<SharedSettingsService>();

   print('onRequest ********************************************');

   // inject token to every request except login request
   if (options.path!=apiAuthToken && _sharedsettingsservice.token?.value?.isNotEmpty!=null) {
     // Authorization: JWT

     var token = 'TOKEN ${_sharedsettingsservice.token.value}';
     options.headers['Authorization'] = token;
     // options.headers['Authorization'] = 'JWT $_logincontroller.token.value';
   }

   return options;
 }
источник

SS

Stefan Stefan in Dart & Flutter по-русски
и на ответ
источник

SS

Stefan Stefan in Dart & Flutter по-русски
@override
 Future onResponse(Response options) async {
   final _logincontroller = Get.find<LoginController>();
   final _secureStorage = Get.find<FlutterSecureStorage>();
   final SharedSettingsService _sharedsettingsservice = Get.find<SharedSettingsService>();

   switch (options.request.path) {
     case apiAuthToken:
       {
         print('Token set update *******************************************');
         String tokendata = options.data['key'];
         await _secureStorage.write(key: tokenKey, value: tokendata);
         _sharedsettingsservice.token.value = tokendata;

         Get.offAllNamed(rHOME);
       }
       break;

     case apiAuthSignout:
       {
         print('Token reset update *******************************************');
         await _secureStorage.delete(key: tokenKey);
         // _logincontroller.token.value = '';
         //
         // Get.offAllNamed(rLOGIN);
       }
       break;

     default:
       {
         print('Normal action *******************************************');
       }
       break;
   }

   return options;

   //   if (options.headers.value(token) != null) {
   //     //if the header is present, then compare it with the Shared Prefs key
   //     SharedPreferences prefs = await SharedPreferences.getInstance();
   //     var verifyToken = prefs.get(token);
   //
   //     // if the value is the same as the header, continue with the request
   //     if (options.headers.value(token) == verifyToken) {
   //       return options;
   //     }
   //   }
   //
   //   return DioError(request: options.request, error: "User is no longer active");
   // }
 }
источник

SS

Stefan Stefan in Dart & Flutter по-русски
работает прекрасно
источник

SS

Stefan Stefan in Dart & Flutter по-русски
хотя действительно почему заголовки определены как масив а не как словарь..., хотя для сервера это не должно быть проблемой, какойто да и возмёт
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
у меня нет речи о том что я бек делать буду
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
я прошлый бек сделал и не знал таких проблем
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
мбо я юзал токен атворизации и пофиг на куки было
источник