React Native中如何移除认证Token?接口调用后本地Token未清除
React Native中正确移除认证Token的方案
你的问题核心是:后端Logout接口仅清除了服务端的Token,但你没有在本地移除存储在AsyncStorage里的Token,所以App内调用接口后本地Token依然存在。以下是修正方案:
1. 添加本地Token删除工具函数
和你的retrieveToken对应,新增一个删除Token的函数:
import AsyncStorage from "@react-native-async-storage/async-storage"; export const deleteToken = async () => { try { await AsyncStorage.removeItem("Token"); } catch (error) { console.error("删除本地Token失败:", error); } };
2. 修改注销逻辑,同步处理后端接口与本地Token
修改你的onLogout函数,确保在后端注销接口调用成功后,再删除本地Token,同时正确处理异步操作:
const onLogout = async () => { try { // 先调用后端注销接口 await logoutRequest(); // 接口调用成功后,删除本地存储的Token await deleteToken(); // 这里可以添加注销后的后续操作,比如跳转到登录页面 } catch (error) { console.error("注销操作失败:", error); } };
3. 视图组件无需修改
你的AuthButton onPress逻辑保持不变即可,因为已经在onLogout里处理了完整流程。
关键说明
- Swagger测试时,服务端会清除会话Token,但App本地的Token存储在设备的
AsyncStorage中,后端无法直接操作,必须由App主动删除。 - 一定要用
await处理异步操作,确保接口调用完成后再执行本地Token删除,避免逻辑顺序错误。
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

