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

React中如何在组件渲染前请求认证API实现路由权限控制?

React + Laravel 架构下获取认证信息并限制路由访问的最佳实践

我的应用采用 Laravel(API服务器) + React(前端) 的架构,需求是限制未认证用户访问App的/admin路由,当前代码逻辑为根据userInfo的isSignedIn状态判断是否跳转。

为实现该需求,需在App组件渲染前请求认证API。我的首次尝试是将异步请求函数作为setState的初始值,但发现初始状态不能为异步函数;也曾尝试在useEffect中调用axios请求,但担心会导致过多重渲染。

请问:通过API获取认证信息的最常用方式是什么?

相关代码示例

function App() {
  const [userInfo, setUserInfo] = setState({isSignedIn: false});
  return (
    <Routes>
      <Route path="/admin/*" element={ userInfo.isSignedIn? <Admin />: <Navigate replace to="/home/sign-in"/> } />
      <Route path="/home/*" element={<Home />} />
    </Routes>
  );
}

首次尝试代码

function App() {
  const requestUserInfo = async() => {
    const result = await axios.get("/auth");
    return result.data;
  }
  const [userInfo, setUserInfo] = setState(requestUserInfo);
  return (
    <Routes>
      <Route path="/admin/*" element={ userInfo.isSignedIn? <Admin />: <Navigate replace to="/home/sign-in"/> } />
      <Route path="/home/*" element={<Home />} />
    </Routes>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:25:33