【发布时间】:2022-10-15 18:59:36
【问题描述】:
我登录时有一个代码,状态码成功200 ok:
Future<User?> login(String nim, String password) async {
String token = await UtilSharedPreferences.getToken();
SharedPreferences pref = await SharedPreferences.getInstance();
try {
var body = {
'username': nim,
'password': password,
};
var response = await http.post(
Uri.parse('http://dev.api.app.masoemuniversity.ac.id/v1/login_mhs'),
headers: {
'Authorization': 'Bearer $token',
},
body: body,
);
print(response.statusCode);
print(response.body);
if (response.statusCode == 200) {
return User.fromJson(jsonDecode(response.body));
} else {
return null;
}
} catch (e) {
print(e);
return null;
}
}
这是我的实用程序:
class UtilSharedPreferences {
static Future<String> getToken() async {
SharedPreferences _prefs = await SharedPreferences.getInstance();
return _prefs.getString('access_token') ?? '';
}
static Future setToken(String value) async {
SharedPreferences _prefs = await SharedPreferences.getInstance();
_prefs.setString('access_token', value);
}
}
但是当我尝试获取数据时 api 无法响应 401 无效,这意味着因为令牌没有保存,所以当我尝试获取用户数据时,响应是 401。
【问题讨论】:
-
您在哪里(如何)存储
token?