我正在加载一个网页,我想用基本身份验证登录,我有使用Swift的经验,能够像下面这样进行基本身份验证,但我不能为我的应用程序的flutter版本实现基本身份验证。
----银行代码---
func configureView() {
let username = "user"
let password = "pass"
let userPasswordString = "\(user):\(pass)"
let userPasswordData = userPasswordString.data(using: String.Encoding.utf8)
let base64EncodedCredential = userPasswordData!.base64EncodedString(options:[])
let authString = "Basic \(base64EncodedCredential)"
let url = URL(string: "http://myurl")
var request = URLRequest(url: url!)
request.setValue(authString, forHTTPHeaderField: "Authorization")
webView.scalesPageToFit = true
webView.loadRequest(request)
}
---flutter webview-->用url加载webview
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class AddShipment extends StatefulWidget {
final String url;
AddShipment(this.url);
@override
State<StatefulWidget> createState() {
return new _AddShipment();
}
}
class _AddShipment extends State<AddShipment> {
final flutterWebviewPlugin = new FlutterWebviewPlugin();
@override
void initState() {
super.initState();
flutterWebviewPlugin.close();
}
@override
void dispose() {
flutterWebviewPlugin.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return new WebviewScaffold(
appBar: new AppBar(
title: new Text("WebView"),
centerTitle: true,
backgroundColor: Colors.blue[900],
elevation: 0.0,
),
url: widget.url,
withJavascript: true,
);
}
}
创建URLRequest的正确方法是什么?我尝试过:
static Future<Response> getURL(
final String username, final String password) {
final String url = 'http://myurl';
final String auth =
'Basic ' + base64Encode(utf8.encode('$username:$password'));
return http.get(url, headers: {'Authorization': auth});
}
最佳答案
将附加的头添加到WebviewScaffold
构造函数中。
url: widget.url,
withJavascript: true,
headers: {'Authorization': 'Basic ' + base64Encode(utf8.encode('$widget.username:$widget.password'))},
以与传递URL相同的方式,将用户名和密码传递到小部件中。