我在后端使用 Laravel,在前端使用 Flutter。
存盤令牌時,我使用本地存盤:
localStorage.setString('token',json.encode(body['access_token']));
這作業正常。令牌按預期存盤。但是當我嘗試從localStorage使用中恢復它時:
token = localStorage.getString('token');
然后令牌將以以下格式回傳:
> \"eyJ0eXAiOiJKV1[...]a0\"
反斜杠位于不應該在那里的令牌的開頭和結尾。
如何在將它們用于我的后端呼叫之前將其洗掉?
但是,在 store 事件之前,我使用 DebugPrint() 來“查看”令牌是從我對 Laravel 的呼叫回傳的。使用 debugPrint(),我得到了正確的令牌結果,如下所示:
>"eyJ0eXAiOiJ[...]|"
uj5u.com熱心網友回復:
但是如果你需要洗掉你的 String 上的最后一個和第一個元素,試試這個,
String token = "\eyJ0\";
List<String> list = token.split(""); // ['\', 'e', 'y', 'j', '0', '\']
list.removeAt(0); // ['e', 'y', 'j', '0', '\']
list.removeLast(); // ['e', 'y', 'j', '0']
final String backslashRemovedToken = list.join();
uj5u.com熱心網友回復:
您可以遵循此令牌存盤并從本地存盤中檢索它。
static Future<SharedPreferences> getSharedPref() async {
return await SharedPreferences.getInstance();
}
static saveToken(String token) async {
await getSharedPref().then((SharedPreferences pref) {
pref.setString("token", token);
print("saving token $token");
});
getToken();
}
static Future<String> getToken() async {
return await getSharedPref().then((SharedPreferences pref) {
String token = pref.getString("token");
// print("getting token $token");
return token;
});
}
final accessToken = await PreferenceManager.getToken();
注意:不要忘記使用 async and await
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/323015.html
標籤:拉拉维尔 扑 laravel-护照 颤振-http
上一篇:如何在刀片視圖中檢查中間件
