5

PassportJS と ExpressJS を使用しています。私は次のルートを持っていますlogout

app.get('/logout', function(req, res){
    req.logout();
    res.redirect('/');
});

ただし、ブラウザの戻るボタンを使用すると、ログインしたユーザーのみを対象としたページが引き続き表示されます。上記のシナリオを回避する方法は?ありがとう

4

1 に答える 1

0

やり方は複数あると思います。アプリでパスポートを使用してそれを行った方法は、「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 を使用しているため、フローは基本的に反応 -> サーバー (ログアウト時) -> 反応ログイン ページに戻るため、ここではアンカー タグが適切であると思います。したがって、使用は不適切だと思います。答えが数年遅れてすみません笑

于 2018-05-25T02:41:11.890 に答える