Appwrite+React电商项目:访客权限报错及登出失效求助
解决Appwrite + React电商站点的两个问题:未登录报错与登出失效
1. 消除未登录时的权限报错
未登录状态下调用account.get()会触发User (role: guests) missing scope (account)错误,原因是访客角色没有访问账户信息的权限。只需修改getCurrentUser()方法,针对性处理该异常即可:
const getCurrentUser = async () => { try { const currentUser = await account.get(); return currentUser; } catch (e) { // 仅在非访客权限不足的场景下打印错误日志 if (e.message !== "User (role: guests) missing scope (account)") { console.error(e); } // 未登录时返回null,便于前端判断状态 return null; } };
2. 修复登出功能(会话无法删除)
你当前的登出逻辑错误地使用了用户ID作为会话ID传入deleteSession(),而该方法需要的是会话ID或固定字符串"current"(代表当前活跃会话)。修改代码如下:
const deleteCurrentSession = async () => { try { // 使用"current"直接删除当前会话,无需额外获取用户信息 return await account.deleteSession("current"); } catch (error) { console.error(error); } };
关于访客只读权限的补充
你已为产品、分类集合设置Any角色仅拥有读取权限,这一配置是正确的,访客可以正常访问这些公开数据,无需额外调整。
内容的提问来源于stack exchange,提问作者pppratspota
相关产品推荐
相关产品推荐

