我有一个 Node.js 和 Express 服务器,并且我使用 Auth0 进行身份验证。如何实现客户端访问“/exit”路由时注销?下面是我的代码:
app.js
const { auth, requiresAuth } = require('express-openid-connect');
app.use(express.static(path.join(__dirname)));
const config = {
authRequired: false,
auth0Logout: true,
baseURL: process.env.BASE_URL || `http://localhost:${port}`,
clientID: process.env.AUTH0_CLIENT_ID,
issuerBaseURL: `https://${process.env.AUTH0_DOMAIN}`,
secret: process.env.SESSION_SECRET,
routes: {
login: false,
},
};
app.use(auth(config));
app.use((req, res, next) => {
res.locals.user = req.oidc.user;
next();
});
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'home.html'));
});
app.get('/login', (req, res) => {
res.sendFile(path.join(__dirname, 'login.html'));
});
app.get('/exit', requiresAuth(), (req, res) => {
try {
/* Logout
req.logout();
req.oidc.logout();
*/
res.redirect('/login');
} catch (error) {
console.error("Error during logout:", error);
res.redirect('/login');
}
});
我尝试使用以下方式注销:
req.logout(); req.oidc.logout();
但是我收到以下错误:
TypeError:req.logout 不是函数 ||类型错误:req.oidc.logout 不是函数。
关于如何在此设置中正确实现注销有什么建议吗?谢谢!
此行将
/login
、/logout
和 /callback
路由附加到 baseURL,因此您无需添加它们:
app.use(auth(config));
您应该能够添加一个调用
/logout
的按钮。例如,在views/index.pug
中:
extends layout
block content
h1= title
p Welcome to #{title}, #{user.name}!
form(method='GET' action='/logout')
button(type='submit') Logout