我正在使用以下堆栈:
我已成功设置基于PassportJS的登录和注册身份验证。我的应用程序中的所有页面都是受保护的路由 - 它们只能由登录用户查看。
所以,我的问题是,对于每条路线,我如何检查用户当前是否登录。我知道快速会话提供服务器端会话管理,但我想知道是否有办法避免在每个页面加载时向后端发出API请求以验证当前用户的会话是否存在。
我的App.js文件:
import React, { Component } from 'react';
import './App.css';
import { BrowserRouter, Route, Switch, Link } from 'react-router-dom';
import AsyncAuthPage from 'components/AsyncAuthPage/index.js'
const NoMatch = () => (
<p>Path not found</p>
);
const HomePage = () => (
<div>WELCOME!</div>
);
class App extends Component {
render() {
return (
<div className="App ">
<BrowserRouter>
<Switch>
<Route path="/login" component = {AsyncAuthPage} />
<Route path="/home" component = {HomePage} />
<Route path="*" component={NoMatch} />
</Switch>
</BrowserRouter>
</div>
);
}
}
export default App;
AsyncAuthPage组件实现了基于PassportJS的身份验证。在上面的示例中,我想通过身份验证来保护主页路由。如何才能做到这一点?用户成功登录后,需要注意以下事项:
答案 0 :(得分:-1)
在成功登录后将凭据存储在localStorage中,在您的州/ redux的应用启动时加载凭据,如果从您的API收到错误401(未经授权),必要时使凭据无效。