提问人:dashy 提问时间:10/19/2023 最后编辑:dashy 更新时间:10/19/2023 访问量:34
PassportJS“logout()”请求卡住待处理
PassportJS `logout()` request stuck pending
问:
调用 passport 函数以清除 cookie 会话时,http 请求卡在挂起状态:logout()
我在以下位置设置了路线:auth.routes.ts
router.get('/login', (req: Request, res: Response) => {
res.render("google-login");
});
router.post('/logout', (req, res, next) => {
req.logout(function(err) {
if (err) { return next(err); }
res.redirect('/auth/login');
});
});
并使用以下路线:app.ts
app.use(cookieSession({
maxAge: 24 * 60 * 60 * 1000, // 24h * 60m * 60s * 1000ms in a second
keys: [process.env.SESSION_KEY] // encrypt/decrypt using this key
}));
app.use(passport.initialize());
app.use(passport.session());''
app.use('/auth', auth_routes);
用户在以下位置被正确序列化/反序列化:passport-setup.ts
passport.serializeUser((user: any, done) => {
done(null, user.id);
});
passport.deserializeUser(async (id, done) => {
logger.info("deserialize id: " + id);
GoogleUserModel.findById(id).then((user) => {
done(null, user);
});
})
显示用户数据的基本配置文件页面:profile.ejs
<body>
<nav>
<ul>
<form action="/auth/logout" method="POST">
<button type="submit">Logout</button>
</form>
<li><a href="/auth/login">Login</a></li>
<li><a href="/">Home</a></li>
</ul>
</nav>
<header>
<h2> Welcome <%= google_user.name %>! </h2>
<h4> Info </h4>
<p> Email: <%= google_user.email %> </p>
<p> Google ID: <%= google_user.google_id %> </p>
<p> Database ID: <%= google_user.id %> </p>
</header>
</body>
Cookie 仍然存在,如通过开发控制台所示:
当按下按钮时,路线被击中,但卡在功能中。在此之前,也会访问正确的用户。我只是不明白为什么请求卡在待处理状态并且没有重定向logout
req.logout()
答: 暂无答案
评论
"/login"
"auth/login"
/auth
logout
Cannot GET /auth/logout