ruby-on-rails 处理使用部分前端时来自rails API的401未经授权错误(react)

axzmvihb  于 2023-02-01  发布在  Ruby
关注(0)|答案(1)|浏览(135)

我使用的是rails 5.2和Ruby 2.7,我的前端是react,我尝试访问我的项目路径,登录/注销由rails app/semi-api处理(它具有除项目页面之外的其他内容的视图,**我知道我需要一个令牌来通过认证检查,但是我似乎找不到任何关于如何从Rails获取令牌的帮助。**我的Rails应用使用Devise进行身份验证,使用Pundit进行授权。
从react应用发送GET请求(使用axios)会立即重定向rails应用以呈现登录页面(在未经授权登录的情况下应该如此)。Snippet of the error in question

const API_URL = 'http://localhost:3000/projects'

function getAPIData(){
  return axios.get(API_URL).then((response) => response.data)
  
}

function App() {
  const [bugs, setBugs] = useState([]);

  useEffect(() => {
    let mounted = true;
    getAPIData().then((items) => {
      if (mounted) {
        setBugs(items);
      }
    });
    return () => (mounted= false);
  }, [])

  return (<Router>
    <Header title='Backend'/>
    <BugList bugs={bugs}/>
    <Footer/>
    </Router>
  );
}

export default App;

上面是我获取数据的axios例程,React运行在4000端口,rails应用程序(使用rack-cors和通配符(*)表达式来接受所有类型的请求)运行在3000端口。

50few1ms

50few1ms1#

const API_URL = 'http://localhost:3000/projects'

function getAPIData(){
  return axios.get(API_URL)
  .then((response) =>
      response.data).catch((err) => {
        if (err?.response?.status === 401) {
          
        }
  })
  
}

function App() {
  const [bugs, setBugs] = useState([]);

  useEffect(() => {
    let mounted = true;
    getAPIData().then((items) => {
      if (mounted) {
        setBugs(items);
      }
    });
    return () => (mounted= false);
  }, [])

  return (<Router>
    <Header title='Backend'/>
    <BugList bugs={bugs}/>
    <Footer/>
    </Router>
  );
}

export default App;

相关问题