You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ReactJS组件中通过React Router V4重定向到服务器路由

实现React Router V4认证路由的未授权重定向

嘿,这事儿不难,我们用React Router v4提供的Redirect组件就能搞定!下面是修改后的完整代码,我给你一步步说明:

首先,你需要先导入Redirect组件——毕竟这是React Router里负责重定向的核心组件:

import { BrowserRouter, Route, Redirect } from 'react-router-dom';

然后修改你的AuthenticatedRoute组件,当未认证时,用Redirect跳转到你的服务器页面(不管是同域名的后端路由还是外部服务器地址,直接填到to属性里就行):

const isAuthenticated = () => { 
  let hasToken = localStorage.getItem("jwtToken"); 
  return !!hasToken; // 简化一下判断逻辑,更简洁直观
};

const AuthenticatedRoute = ({ component: Component, ...rest }) => (
  <Route 
    {...rest} 
    render={props => 
      isAuthenticated() ? 
        <Component {...props} /> : 
        <Redirect to="/server-login" /> // 这里替换成你的服务器页面路由,比如"/login"或者完整的服务器URL
    } 
  />
);

最后,你的App组件里正常使用这个AuthenticatedRoute就好:

class App extends Component { 
  render() { 
    return ( 
      <BrowserRouter basename="/editor">
        {/* 这里放你的路由配置,比如受保护的仪表盘路由 */}
        <AuthenticatedRoute path="/dashboard" component={Dashboard} />
        {/* 其他公共路由,比如首页、登录入口 */}
        <Route path="/home" component={Home} />
      </BrowserRouter>
    );
  }
}

小补充:

  • 如果你的服务器页面是外部域名的,直接把to的值改成完整的URL就行,比如<Redirect to="https://your-auth-server.com/login" />
  • 实际项目里,isAuthenticated函数可以再优化下,比如检查token是否过期,而不只是判断有没有token,这样安全性更高

内容的提问来源于stack exchange,提问作者Mendes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:11:49