【问题标题】:Logout user from Strapi (React Native)?从 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>

【问题讨论】:

    标签: reactjs react-native react-redux strapi


    【解决方案1】:

    您可以将登录的用户详细信息存储在异步存储等持久状态中,当用户注销时删除此详细信息。你可以做这样的事情。

    if(loggedInUser) { return &lt;AuthenticatedStack /&gt; } return &lt;UnauthenticatedStack /&gt;

    当您从异步存储中删除此 loggedInUser 时,它将重定向到未经身份验证的堆栈或登录屏幕。

    【讨论】:

      【解决方案2】:

      实际上,您已经朝着正确的方向前进。 Strapi 没有任何 api 用于注销用户,因为注销仅在客户端本地完成。这只需要您从浏览器中删除jwtusername 令牌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");
      }
      
      参考资料:
      1. Strapi auth example in React

      【讨论】:

        猜你喜欢
        • 2020-02-17
        • 2018-06-15
        • 2020-08-07
        • 2018-01-15
        • 1970-01-01
        • 1970-01-01
        • 2022-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多