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

登录页面不会重定向到路由到登录页面

单于奇略
2023-03-14

我现在一直在努力使用我的登录页面来让组件呈现Loggedin组件。我的前端是Reactjs,后端是NodeJS。我对nodejs、expression和react都是新手。

在loginform组件上,我使用fetch进行了一次post,它将用户名和密码传递给后端的相应endpoint。没问题。在后端,它读取我存储用户(不使用任何数据库)的jsonfile来查找匹配项,如果用户名和密码都匹配,则它发送的响应为true。我已经测试过它是否有效。

LoginForm前端:

handleSubmit= (e) => {
    e.preventDefault()
    console.log(this.state)
    const { username, password} = this.state;
    const data = {username: username, password:password}
    
    fetch('http://localhost:3001/Login', {
          method: 'POST',
          mode:'cors',
          body: JSON.stringify(data),
          headers: {
            "Content-type": "application/json"
          }  
        })
        .then(function(res){
          return res.json()}).then(function(resjson){
            console.log(resjson);
            if (resjson){
              console.log(resjson);
              return<Redirect to='/myAccount'/>  
            }
            if(resjson==false){
              console.log(resjson);
            }
          })
           
        }

我一直试图通过实验来利用react-router-dom。但无论我如何去与它的组件登录用户永远不会呈现偶数如果resjson是真的,甚至没有路由更改为"localhost:3000/myAccount"。我也尝试添加use历史,但当我添加常量历史=use历史();时,会导致无效的钩子

有什么想法吗?如果你需要我添加任何其他内容,我会这样做,因为我没有在JS方面的经验,我可能遗漏了一些重要的内容。

提前感谢!

共有1个答案

柳绪
2023-03-14

看看下面,我在评论中写下了解释:

fetch("http://localhost:3001/Login", {
  method: "POST",
  mode: "cors",
  body: JSON.stringify(data),
  headers: {
    "Content-type": "application/json",
  },
})
  .then(function (res) {
    return res.json();
  })
  .then(function (resjson) {
    console.log(resjson);
    if (resjson) {
      console.log(resjson);
      // here you're returning a React Component and it could work inside  render !
      // return <Redirect to="/myAccount" />;

      // you could use history to redirect:
      // if you're inside a class component you could use withRouter HOC instead (there is a link below)
      return history.push("/myAccount");
    }
    if (resjson == false) {
      console.log(resjson);
    }
  });

这是withRouter HOC使用的链接。

 类似资料:
  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 我在Laravel框架中的HomeController.php中有一段代码,但是我无法访问它重定向到登录页面的索引/主页。我犯了什么大错?

  • 这是views.py的内容: 在转到“/”时,我被重定向到“/accounts/login”,它将我带到登录页面。我输入用户名和密码后,在“验证”打印语句printd“登录”到终端。 到目前为止还不错。现在,我不再被重定向到“/”,而是再次被重定向到“/accounts/login”,并再次显示输入用户名和密码的页面。为什么?

  • 我使用的是Spring Security 4.1.1,但我遇到了一个问题:我试图访问URL,应用程序会重定向到登录页面。到现在为止,一直都还不错。 但是,成功登录后,应用程序会再次将我重定向到登录页面,并且不会创建任何会话,因此即使尝试直接访问URL(在URL栏中键入),应用程序也会重定向到登录页面。 有一些URL我必须要求登录才能访问它们。其他的,我可以访问无需身份验证。这些我不需要验证的URL

  • 当(在Spring Security/MVC中)页面访问被拒绝时,由于用户没有足够的权限(尽管他已通过身份验证),我需要通过显示登录页面(而不是显示403拒绝访问页面的标准行为)提供作为另一个用户登录 我可以编写一个,重定向到登录页面。但是,当Spring Security发现有另一个用户登录时,它会做出怎样的反应?当新用户已成功通过身份验证时,我能否以某种方式注销旧用户?

  • 我使用的是和和。一切都很好,但是当会话超时的时候,我会得到以下错误”,因为我已经在布局的main.gsp文件中调用了session变量。现在,我希望在每次会话超时后重定向到登录页面,并且不显示错误页面。要在会话超时后重定向,我已经在文件中这样做了 但是有这么多页,所以很难写每一页。还有其他的方法做这件事吗?请帮忙。