mongodb 如何保持登录用户不回去?

roejwanj  于 2023-10-16  发布在  Go
关注(0)|答案(2)|浏览(110)

我目前正在使用React Js开发Web平台。我已经将后端令牌存储到我的本地存储中,但一旦用户成功登录,他就不应该用浏览器返回箭头单击返回。他应该坚持在同一个页面,那么我怎么能在react js中做到这一点呢?我可以在那里使用useEffect钩子吗?或者我必须为此写任何条件?只有点击注销按钮,他应该回来,而不是浏览器回来箭头。有些人使用componentDidMount,但我在功能组件中,所以我使用useEffect,但它不起作用。我尝试了多种方法,但无法找到解决方案。如何在react js中实现?
先谢了。

6l7fqoea

6l7fqoea1#

您可以使用用户上下文,在登录时,用户信息存储在localStorage和上下文API中。

const storeUser = ({user, token}) => {
  localStorage.setItem('user', JSON.stringify(user));
  localStorage.setItem('token', token);
  setUserState((prevUserState) => ({ ...prevUserState, user, token}));
};

那么只要你正确地实现了你的用户上下文,你的数据就会在整个网站上持久化。需要明确的是,如果正确实现了上下文,按下back将不会清除localStorage或user状态。
我担心,如果你试图在一个功能组件中实现它,数据将在重新渲染时被擦除。
如果您想检查用户是否已登录,则可以修改站点,使其仅允许已登录的用户访问,方法是:

{user.singedIn ? (<h1>Hello user</h1>) : (<h1>please sign in</h1>)

或者在你的路线上

<Route path='/' element={!user ? <Navigate replace to='/login' /> : <Home />} />
7qhs6swi

7qhs6swi2#

我认为您可以创建一个保护路由功能,将获取的令牌存储在本地存储中,并给予一个条件,即只要令牌可用,就不允许用户看到登录页面,然后您可以在handlogout中从本地存储中清除令牌

相关问题