React 的登录重定向错误是不是有任何修复?

Posted

技术标签:

【中文标题】React 的登录重定向错误是不是有任何修复?【英文标题】:Is there any fix to the login redirect bug with React?React 的登录重定向错误是否有任何修复? 【发布时间】:2020-05-24 04:16:08 【问题描述】:

我对此感到困惑,因为我已从他们的文档 (auth0) 中粘贴了整个代码,但它似乎无法正常工作,我不知道为什么,但我不断收到该错误:

TypeError: Cannot read property 'loginWithRedirect' of undefined

在他们的原始包装上

 loginWithRedirect: (...p) => auth0Client.loginWithRedirect(...p),

并在这一行指向我的 NavMenu.js 文件

<button className="btn btn-success" onClick=() => loginWithRedirect()>Login</button>

这是我的 NavMenu 实现 Auth0 的完整代码

import React,  Component  from 'react';
import  Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink  from 'reactstrap';
import  Link  from 'react-router-dom';
import './NavMenu.css';

import useAuth0 from '../auth0-wrapper';


const NavMenu = () => 
  const isAuthenticated, loginWithRedirect, logout, loading = useAuth0 ();
  return (
    <header>
      <Navbar className="navbar-expand-sm navbar-toggleable-sm ng-white border-bottom box-shadow mb-3" light>
        <Container>
          <NavbarBrand tag=Link to="/">Hotel</NavbarBrand>
          isAuthenticated ? (
            <ul className="navbar-nav flex-grow">
            <NavItem>
                <NavLink tag=Link className="text-dark" to="/create">Create</NavLink>
              </NavItem>
              <NavItem>
                <NavLink tag=Link className="text-dark" to="/bookings">Bookings</NavLink>
              </NavItem>
              <NavItem>
                <button className="btn btn-danger" onClick=() => logout()>Log out</button>
              </NavItem>
            </ul>
          ) : (
            <ul lassName="navbar-nav flex-grow">
             <NavItem>
                <button className="btn btn-success" onClick=() => loginWithRedirect()>Login</button>
              </NavItem>
            </ul>
          )
        </Container>
      </Navbar>
    </header>
  );



export default NavMenu;

任何帮助将不胜感激。

【问题讨论】:

auth0Client 可能没有导入成功。 @AlexandreLage 我重新安装了auth0Client 3 次,但仍然无法正常工作 你是如何安装它的?请多展示一下你的情况。 @cssnoobie @AlexandreLage 我正在使用他们的文档和 node js npm install @auth0/auth0-spa-js --save中的命令来安装它@ 好的。您确实在使用节点。以及如何在代码顶部导入auth0Client 【参考方案1】:

我也遇到了这个错误。如果您通过 Chrome 开发工具查看,您可能会看到在从 auth0 加载资源时收到 400 错误。这是错误:400 Error by auth0 Servers

如果是这种情况,您的问题很可能是 auth0 应用程序设置中允许的来源配置错误。这里的任何错误都会导致这个问题。我遇到了同样的问题,解决了它,并且能够为这个答案复制这个问题。

对于开发,我使用的是http://localhost:3000/,但最后的/ 导致资源无法加载。尝试检查您在 auth0 中的设置,并确保您的允许 url 和来源正确。

【讨论】:

这为我解决了!刚刚将应用程序 URI 全部更新为 localhost:3000,它运行良好。谢谢!【参考方案2】:

即使您完全按照发布的方式使用演示代码,也会出现此错误。 奇怪的是它偶尔会起作用。

我找到了一个“半修复”

// in App.js  

const  loading, user, isAuthenticated, loginWithRedirect, logout  = useAuth0();

if (loading) 
  return <Loading />;


return (<></>);

这只会将错误转换为永久加载屏幕。也许有帮助。

【讨论】:

实际上,这似乎可行。我添加了该修复程序,并且微调器花了 1-2 分钟的时间,但随后就起作用了。此后,它正常工作。我认为某些东西处于奇怪的状态,必须超时/重置然后才能正常工作。【参考方案3】:

我最近在使用 Auth-0 构建 React 应用程序时也遇到了这个错误。我还没有实现&lt;PrivateRoute/&gt; 功能,但一直收到错误。如果您从浏览器中的 cookie 中删除 Auth-0 令牌,则此错误将消失,直到实现 &lt;PrivateRoute/&gt; 组件。

【讨论】:

以上是关于React 的登录重定向错误是不是有任何修复?的主要内容,如果未能解决你的问题,请参考以下文章

登录React Native时无法重定向用户

Vue路由重定向、别名与导航守卫

如何保护 Django 中的静态 HTML 文件? (重定向前需要登录)

如何将所有访客请求重定向到 Laravel 应用程序中的登录页面?

NexJs 重定向略有延迟

当应用程序在本地运行时如何修复 PHP 上的重定向错误