我遵循了一个教程,在一个简单的create-react-app上设置Auth0
。到目前为止,我在项目中唯一拥有的就是身份验证和路由。在 localhost 中进行开发时,该应用程序运行良好:
/home
,并显示了当前登录状态/home
,^ 正如我提到的那样,所有这些路由在开发中都可以正常工作。我能够看到一个登录页面,按登录,使用凭据登录,通过/callback
重新路由回到首页,并且仅在您登录后才能看到可用的资料。然后我可以注销并进行路由正确地再次返回登录页面。
我将应用程序部署到了网站(https://dashboard.xxxxx.com),但除/以外,其他任何路由均无效。因此https://dashboard.xxxxx.com可行,但找不到https://dashboard.xxxxx.com/home或https://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>
答案 0 :(得分:1)
之所以发生这种情况,是因为您没有将所有请求从用于初始化应用程序的服务器重定向到index.html
。
您需要将所有调用从服务器端重定向到index.html,这些调用可能在.htaccess
文件,节点或您将要使用的任何其他框架中。
如果您使用重定向或其他方式,则本地重定向到index.html
的操作由Create-react-app处理。