我正在使用PassportJS和ExpressJS。我有logout
的路线:
app.get('/logout', function(req, res){
req.logout();
res.redirect('/');
});
但是,当使用浏览器的后退按钮时,仍然可以显示仅供登录用户使用的页面。如何避免上述情况?感谢
答案 0 :(得分:0)
我认为有多种方法可以做到这一点。我在我的应用程序中使用护照的方式是我有一个redux reducer +动作调用" api / current_user",然后返回一个值为true或false的prop。如果用户已登录,则为True;如果已注销,则为false。
class ChatContainer extends Component {
renderContent() {
switch (this.props.auth) {
case null:
return;
case false:
return <Redirect to="/" />;
default:
return [<ChatHeader key="1" />, <ChatWindow key="2" />];
}
}
render() {
return <div className="chat-container">{this.renderContent()}</div>;
}
}
聊天组件是/ chat,在显示任何内容之前会通过renderContent()逻辑。只要您希望父组件(通过react-router-dom负责页面的组件)仅对登录用户可见,只需使用mapStateToProps - &gt; this.props.auth。
我认为既然我们通过我们的服务器使用oauth,那么锚标签在这里是合适的,因为流程基本上是反应 - &gt;服务器(当我们退出时) - &gt;回到您的反应登录页面。因此,我相信使用是不合适的。对不起,答案是晚了几年lol