Как перенаправить пользователя, прошедшего проверку подлинности API (токеном) (в приложении флаттера), на аутентификацию на основе сеанса (в веб-представлении флаттера)? - PullRequest
0 голосов
/ 02 февраля 2019

Чего я хочу достичь: допустим, у меня есть пользователь, прошедший аутентификацию Api (токен), и затем, как только этот пользователь нажмет кнопку, я хотел открыть веб-просмотр и аутентифицировать его при аутентификации на основе сеанса.enter image description here

То, что я делал до сих пор (множество решений и предложений):

  1. использование url_launcher:

    • открыть браузер при нажатии launch(url)
    • отправить токен (GET params) на внутренний сервер
    • аутентифицировать пользователя и перенаправить обратно Работает хорошо, НО плохой Ux, пользователь должен идтимежду браузером и приложением!
  2. использовать 1 flutter_webview_plugin или 2 webview_flutter:

    • открыть веб-просмотр по клику 1

      class __WebWidget extends StatelessWidget {
       @override
       Widget build(BuildContext context) {
         return WebviewScaffold(
           url: url + "?token=${userManager.token}",
           appBar: new AppBar(
             title: Text('Space'),
           ),
           withZoom: true,
           withLocalStorage: true,
           hidden: true,
           initialChild: Container(
             color: Colors.blueAccent,
             child: const Center(
               child: Text('Loading....'),
             ),
           ),
         );
       }
      }
      

      2

      class WebWidget extends StatelessWidget {
        WebWidget({this.url});
      
        final String url;
      
        @override
        Widget build(BuildContext context) {
          return Scaffold(
            appBar: AppBar(
              title: Text('Votre Espace '),
            ),
            body: WebView(
              initialUrl: url + "?token=${userManager.token}",
              javascriptMode: JavascriptMode.unrestricted,
            ),
          );
        }
      }
      ```
      
    • отправить токен (параметры GET) на внутренний сервер

    • аутентифицировать пользователя и перенаправитьназад не работает!

Я подозревал, что веб-просмотр не поддерживает куки!

В бэкэнде я использую laravel (php7) и сервер Apache.

заранее спасибо

1 Ответ

0 голосов
/ 21 мая 2019

Поскольку вы используете флаттер, я бы порекомендовал плагин Flutter Web Auth для аутентификации пользователя с помощью веб-службы.Его можно использовать для любого веб-потока, который может перенаправлять на пользовательскую схему.

Он автоматически перенаправляет вас в ваше приложение с аутентифицированными токенами (если ваше приложение является Android, не забудьте отредактировать файл AndroidManifest.xml согласно инструкциям.указано в файле README.md )

...