繁体   English   中英

无法将存储在 flutter 安全存储中的身份验证令牌获取到标头

[英]Can't get auth token stored in flutter secure storage to headers

我正在使用 API 制作 flutter 应用程序,但我遇到了问题。 当我想获得身份验证令牌以发出请求时,flutter 说“期望一个'String'类型的值,但得到一个'_Future'类型的值”。 如何在没有该错误的情况下使用身份验证令牌发出请求?

我的登录 function,我在其中写了令牌:

loginUser() async {
    final storage = new FlutterSecureStorage();
    Uri uri = Uri.parse("http://127.0.0.1:8000/api/account/login");
    await http
        .post(uri,
            headers: {"Content-Type": "application/json"},
            body: jsonEncode({
              "username": emailController.text,
              "password": passwordController.text
            }))
        .then((response) async {
      if (response.statusCode == 200) {
        var data = json.decode(response.body);
        await storage.write(key: "token", value: data["token"]);
        print(data["token"]);
      } else {
        print(json.decode(response.body));
      }
    });
  }

我的 getdata function,我在其中使用令牌:

getdata() async {
    final storage = FlutterSecureStorage();
    Uri uri = Uri.parse("http://127.0.0.1:8000/api/account/countries");
    await http.get(uri, headers: {
      "Content-Type": "application/json",
      "Authorization": await storage.read(key: "token")
    });
  }

试试这个代码

String token = await storage.read(key: 'token');

 //make sure if there is no Bearer just token in that case just pass the token
     
    var headers = {
       'accept': 'application/json',
       'Authorization': 'Bearer ${token}',
    };
    
    Uri uri = Uri.parse("http://127.0.0.1:8000/api/account/countries");
    
    Response response = await http.get(
        uri, 
        headers: headers
    );
    
    print (response);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM