从 Strapi (React Native) 注销用户?
Posted
技术标签:
【中文标题】从 Strapi (React Native) 注销用户?【英文标题】:Logout user from Strapi (React Native)? 【发布时间】:2022-01-22 22:12:38 【问题描述】:我一直在尝试从我的 React 本机应用程序(使用 Strapi)中注销已登录的用户。我应该将其重定向到任何特定的 URL 还是可以删除 JWT 令牌?如果是,请指出我正确的方向。 出于显而易见的原因,将“注销”按钮重定向到登录页面并不会结束已登录用户的会话。
<Button
mode="outlined"
onPress=() => navigation.navigate('Login')
style=styles.button2
labelStyle=
color: '#48b749',
fontSize: 12,
fontWeight: 'bold',
textAlignVertical: 'center',
textAlign: 'center',
>
Logout
</Button>
【问题讨论】:
【参考方案1】:您可以将登录的用户详细信息存储在异步存储等持久状态中,当用户注销时删除此详细信息。你可以做这样的事情。
if(loggedInUser) return <AuthenticatedStack /> return <UnauthenticatedStack />
当您从异步存储中删除此 loggedInUser 时,它将重定向到未经身份验证的堆栈或登录屏幕。
【讨论】:
【参考方案2】:实际上,您已经朝着正确的方向前进。 Strapi
没有任何 api
用于注销用户,因为注销仅在客户端本地完成。这只需要您从浏览器中删除jwt
和username
令牌localStorage
让我在下面为您提供他们strapi blog 帖子中的引述。
我们设置了两个端点:
登录:对用户进行身份验证。成功验证后,JWT 令牌将在响应的 jwt 属性中可用 对象。 user:获取认证用户的信息。如果用户通过身份验证,JWT 令牌将被添加到请求中,允许 Strapi 来识别用户。由于响应对象已经是 用户信息本身,我们将 propertyName 设置为 false。我们还禁用了注销端点,因为注销用户是 只在本地完成,不需要对 Strapi 的 API 提出任何请求。这 当用户注销时,令牌会从本地存储中删除。
说到你要写的那种代码,你可以参考下面的sn-p:
import useHistory from "react-router-dom";
let history = useHistory();
logout()
localStorage.removeItem('jwt');
localStorage.removeItem('username');
history.push("/sigin");
参考资料:
-
Strapi auth example in React
【讨论】:
以上是关于从 Strapi (React Native) 注销用户?的主要内容,如果未能解决你的问题,请参考以下文章
从Hybrid到React-Native: JS在移动端的南征北战史
react native 安卓打包--mac环境,如果打包不成功可注意下my-release-key.keystore的位置关系(绝对路径)