【问题标题】:How to completely destory passport/express session?如何彻底销毁护照/快递会话?
【发布时间】:2017-03-07 22:16:20
【问题描述】:

我试过了

req.session.destroy();
req.logout();
req.logOut();

注销后我检查

req.isAuthenticated()

返回 false

但是,如果我再次访问 /login,它将自动向同一用户验证我,而无需将我带到登录表单。

我使用 OAuth2Strategy 策略将其连接到 ORCID 的护照。我想完全销毁会话,所以如果我想再次登录,我可以使用不同的用户来完成。

我是这样设置的:

app.use(session({
    secret: 'secret,
    saveUninitialized: 'true',
    resave: 'true'
}));

app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser((user, done) => {
    done(null, user);
});

passport.deserializeUser((user, done) => {
    done(null, user);
});

passport.use(new OAuth2Strategy({
    scope: '/authenticate',
    authorizationURL: '',
    tokenURL: '',
    clientID: '',
    clientSecret: '',
    callbackURL: '',
    passReqToCallback: true
},
    (req, accessToken, refreshToken, params, profile, cb) => {
        cb(null, data);
    }
));

我正在构建一个 SPA,因此我希望 /logout 路由只返回成功状态,并且下次我尝试登录时将我带到表单,而不是根据我猜测的 cookie 或东西。

我怎样才能做到这一点?

【问题讨论】:

    标签: express passport.js express-session


    【解决方案1】:

    好像是orcID特有的,我必须forcelogout

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2014-06-24
      • 2012-12-06
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多