问题是:
服务器上有通过基本身份验证访问的端点。例如,要访问帖子列表,需要向 /api/posts 发出一个 get 请求,并传递 header Authorization : base64Encode<userlogin,userpass>
。
在成功的情况下,像往常一样为 200 状态代码,在失败的情况下,代码为 40*。
代码示例
// Кодируем данные
String base64Auth = stringToBase64.encode("${login}:${password}");
http.get(
url,
headers: {
"Content-Type": "application/json",
"Authorization": "Basic $base64Auth"
},
).then((http.Response response) {
final int statusCode = response.statusCode;
// В случае успеха нужно как-то запомнить пользователя,
// чтобы после перезапуска приложения авторизация сохранилась
if (statusCode == 200) {
// Эта переменная сбросится в начальное состояние (false) после перезапуска
isLoggedIn = true;
Navigator.pushNamedAndRemoveUntil(
context, Constants.ROUTE_HOME, (route) => false);
} else {
return 'Ошибка авторизации. Проверьте логин и пароль';
}
}).catchError((err) {
//Отправка ошибки на сервер
return 'Неизвестная ошибка.';
});
一般来说,问题是如何在flutter上实现cookie之类的东西。
这是获取 cookie 的方法(或使用CookieJar库):
但是为了在重新启动应用程序后使用它们,您需要保存这些数据。为此,您可以使用:shared_preferences、hive、sqflite等。