如何将api(令牌)经过身份验证的用户(在flutter应用程序中)重定向到基于会话的身份验证(在扑动的Web视图中)?

我想要实现的目标:假设我有一个经过Api(令牌)身份验证的用户,然后一旦用户点击一个按钮 我想打开一个网络视图并在基于会话的身份验证中对他进行身份验证。
</ p>

到目前为止我做了什么(很多解决方案) 和命题):</ p>


  1. 使用 url_launcher </ code>:</ p>


    • 打开 浏览器单击启动(网址)</ code> </ li>
    • 将令牌(GET参数)发送到后端服务器</ li>
    • 对用户进行身份验证并重定向回
      工作正常但是糟糕的Ux,用户需要在浏览器和应用程序之间进行操作!</ li>
      </ ul> </ li>
    • 使用1 flutter_webview_plugin </ code>或 2 webview_flutter </ code>:</ p>


      • 点击
        1打开网页浏览</ p>

          class __WebWidget扩展了StatelessW  idget {
        @override
        Widget build(BuildContext context){
        返回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(\ n child:Text('Loading ....'),
        ),
        ),
        );
        }
        }
        </ code> </ pre>

        2 </ p>

         类WebWidget扩展StatelessWidget {
        WebWidget({this.url});

        最终String url;

        @override
        Widget build(BuildContext context){
        返回Scaffold(
        appBar:AppBar(
        title:Text('Votre Espace'),
        ),
        body:WebView(
        initialUrl: url +“?token = $ {userManager.token}”,
        javascriptMode:JavascriptMode.unrestricted,
        ),
        );
        }
        }

         </ code> </ pre  > </ li> 
         <li> <p>将令牌(GET参数)发送到后端服务器</  p> </ li> 
         <li>对用户进行身份验证并重定向回来
        不工作!  </ li> 
         </ ul> </ li> 
         </ ol> 
        
         <p>我怀疑webview不支持cookie!</ p> 
        
         <blockquote> \  n <p>在后端,我正在使用laravel(php7)和Apache服务器。</ p> 
         </ blockquote> 
        
         <p>提前感谢</ p> 
         </ div>
        

展开原文

原文

What I want to achieve: let's say I have an Api (token) authenticated user then once this user click a button I wanted to open a web-view and authenticate him on a session based auth. enter image description here

What I did till now (many solutions and propositions):

  1. use url_launcher:

    • open a browser on click launch(url)
    • send a token (GET params) to the backend server
    • authenticate the user and redirect back Working well BUT bad Ux, user needs to go between browser and the app!
  2. use 1flutter_webview_plugin or 2webview_flutter:

    • open a webview on click 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,
            ),
          );
        }
      }
      ```
      
    • send a token (GET params) to the backend server

    • authenticate the user and redirect back Not Working !

I suspected that the webview does not support the cookies !

In the backend, i'm using laravel (php7) and Apache server.

thanks in advance

1个回答



由于您正在使用颤振,我建议使用 Flutter Web Auth 插件,用于使用Web服务对用户进行身份验证。 它可用于任何可以重定向到自定义方案的Web流程。</ p>

它会自动将您重定向到具有经过身份验证的令牌的应用程序(如果您的应用程序是Android,则记得编辑AndroidManifest。 xml按照 README.md 文件中的说明进行操作)< / p>
</ div>

展开原文

原文

Since you're using flutter, I'd recommend the Flutter Web Auth plugin for authenticating a user with a web service. It can be used for any web flow that can redirect to a custom scheme.

It automatically redirects you to your app with authenticated tokens (If your app is Android then remember to edit the AndroidManifest.xml as per the instructions given in the README.md file)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问