PassportJS と ExpressJS を使用しています。私は次のルートを持っていますlogout
:
app.get('/logout', function(req, res){
req.logout();
res.redirect('/');
});
ただし、ブラウザの戻るボタンを使用すると、ログインしたユーザーのみを対象としたページが引き続き表示されます。上記のシナリオを回避する方法は?ありがとう
PassportJS と ExpressJS を使用しています。私は次のルートを持っていますlogout
:
app.get('/logout', function(req, res){
req.logout();
res.redirect('/');
});
ただし、ブラウザの戻るボタンを使用すると、ログインしたユーザーのみを対象としたページが引き続き表示されます。上記のシナリオを回避する方法は?ありがとう
やり方は複数あると思います。アプリでパスポートを使用してそれを行った方法は、「api/current_user」を呼び出すredux reducer +アクションを持っていることです。これは、trueまたはfalseの値を持つ小道具を返します。ユーザーがログインしている場合は 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 -> this.props.auth を使用します。
サーバー経由で oauth を使用しているため、フローは基本的に反応 -> サーバー (ログアウト時) -> 反応ログイン ページに戻るため、ここではアンカー タグが適切であると思います。したがって、使用は不適切だと思います。答えが数年遅れてすみません笑