React-Router-DOM实际上没有创建路由吗?

时间:2019-07-31 13:03:13

标签: javascript reactjs authentication auth0 react-router-dom

我遵循了一个教程,在一个简单的create-react-app上设置Auth0。到目前为止,我在项目中唯一拥有的就是身份验证和路由。在 localhost 中进行开发时,该应用程序运行良好:

  • /路由到/home,并显示了当前登录状态
  • / home路由到/home,^
  • 身份验证服务调用的
  • / callback路由正确,可以处理身份验证并重定向到登录页面。

正如我提到的那样,所有这些路由在开发中都可以正常工作。我能够看到一个登录页面,按登录,使用凭据登录,通过/callback重新路由回到首页,并且仅在您登录后才能看到可用的资料。然后我可以注销并进行路由正确地再次返回登录页面。

我将应用程序部署到了网站(https://dashboard.xxxxx.com),但除/以外,其他任何路由均无效。因此https://dashboard.xxxxx.com可行,但找不到https://dashboard.xxxxx.com/homehttps://dashboard.xxxxx.com/callback

这会导致auth0服务无法登录,因为它重定向到https://dashboard.xxxxx.com/callback,但该页面不存在。

我从react-router-dom开始仅使用带有路由的路由器,然后尝试使用带有交换机和路由的路由器。然后,我尝试了BrowserRouter,然后尝试了HashRouter,但是都没有成功。我当前的代码如下:

    <HashRouter history={history} component={Home}>
        <Switch>
            <Route exact path='/' render={(props) => <Home auth={auth} {...props}/>}/>
            <Route exact path='/home' render={(props) => <Home auth={auth} {...props}/>}/>
            <Route exact path='/callback' render={(props) => {
                handleAuth(props);
                return <Callback {...props}/>
            }}/>
        </Switch>
    </HashRouter>

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您没有将所有请求从用于初始化应用程序的服务器重定向到index.html。 您需要将所有调用从服务器端重定向到index.html,这些调用可能在.htaccess文件,节点或您将要使用的任何其他框架中。

如果您使用重定向或其他方式,则本地重定向到index.html的操作由Create-react-app处理。