ExpressJS和PassportJS注销 - 后退按钮

时间:2013-09-17 10:02:56

标签: express passport.js

我正在使用PassportJS和ExpressJS。我有logout的路线:

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

但是,当使用浏览器的后退按钮时,仍然可以显示仅供登录用户使用的页面。如何避免上述情况?感谢

1 个答案:

答案 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