当前位置: 首页 > 知识库问答 >
问题:

react cognito和路由器v4:登录后将用户重定向到请求的PrivateRoute

越望
2023-03-14

我是React Redux路由器的新手,在成功登录后如何将用户转发到所请求的PrivateRoute上,我一直在绞尽脑汁。

react cognito启动cognito\u LOGIN操作,并在成功登录时在存储中设置cognito.state=“LOGGED\u IN”。我知道react路由器将请求的路由存储在location.state.from.pathname中,我知道要重定向浏览器路由器,我可以使用history.replace()

我只是不知道我的代码去了哪里,所以它在react-cognito-onSubmit登录函数异步完成后执行,因为这个包没有提供回调。

在我的登录表单组件我尝试

componentWillReceiveProps(nextProps) {
    if (nextProps.cognito.state === 'LOGGED_IN') {
      // logged in, let's show redirect if any, or show home
      try {
        const { from } = this.props.location.state || {
          from: { pathname: "/" }
        };
        nextProps.history.replace(from);
      } catch (err) {
        nextProps.history.replace("/");
      }
    }
  }

……但执行得太早了。我不认为这样的东西应该放在减速机里,因为它们似乎只是为了直接操纵商店,但我可能离那里很远。

是否有一些功能在react-router-redux包,可能会提供一些有用的东西在这里?

我没有回调就卡住了吗?难道就没有办法守望cognito.state?

欢迎建议。

TIA

共有2个答案

苍温文
2023-03-14

您可以在操作中使用推送方法来调度一个将您的应用重定向到所需位置/路线的操作。

action.js

import {push} from 'react-router-redux';

/*** write your API here and after success redirect your route ***/

.then(() => {
   dispatch(push(args.redirectRoute))
 })

确保已使用Redux配置React路由器。

有玄天
2023-03-14

使用react-router-v4的标准方法是渲染一个

就你而言:

render() {
    if (this.props.cognito.state === 'LOGGED_IN') {
        return (<Redirect to="/" />)
    }
    //...
}

默认情况下,这将替换当前位置。

有关更多信息,请参见此示例。

 类似资料:
  • 我在使用React路由器进行登录后重定向时遇到问题。 假设用户试图导航到但被重定向到因为他们的会话已过期。endpoint存在于PrivateRoute中。 登录后,我希望用户被引导到,但相反,他们目前只重定向到。 成功登录后,如何利用原始目的地进行重定向? 谢谢你的时间!

  • 我有一个Spring BootUI应用程序。我试图在登录后将用户重定向到最初请求的URL。 当用户请求http://www.example.com/myapp/user/22时,应用程序会适当地重定向到http://www.example.com/myapp/login.一旦用户登录,应用程序会重定向到http://www.example.com/myapp/dashboard.我希望应用程序重定

  • 在我的Laravel应用程序中,我有一个只能由Auth用户访问的私人页面。我也使用社交登录,所以当用户未登录就进入私人页面时,Laravel会将用户发送到登录页面,成功登录后,用户会被发送回原始目的地(私人页面)。只有当用户通过Laravel内置认证系统登录时,但当用户通过社交登录方法登录时,用户将被引导到主页。 这是我登录后的社交登录处理程序: 如果用户在会话中出现,我如何将其发送到原始目的地,

  • 我现在一直在努力使用我的登录页面来让组件呈现Loggedin组件。我的前端是Reactjs,后端是NodeJS。我对nodejs、expression和react都是新手。 在loginform组件上,我使用fetch进行了一次post,它将用户名和密码传递给后端的相应endpoint。没问题。在后端,它读取我存储用户(不使用任何数据库)的jsonfile来查找匹配项,如果用户名和密码都匹配,则它

  • 问题内容: 我试图制作一个过滤器来阻止未登录的用户访问某些页面。为此,我使用以下方法制作了一个过滤器类 为了允许不需要用户登录的页面,我在init()中创建了一个arraylist url-list。 现在发生了一件非常奇怪的愚蠢的事情。假设我有两个页面home.jsp和dcr.jsp。当我尝试不登录而访问home.jsp时,我已成功重定向至login.jsp,但是当我尝试访问dcr.jsp时,尽