如何使用 Auth0 在 Node.js 和 Express 应用程序中实现注销?

问题描述 投票:0回答:1

我有一个 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 不是函数。

关于如何在此设置中正确实现注销有什么建议吗?谢谢!

node.js express auth0
1个回答
0
投票

此行将

/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
© www.soinside.com 2019 - 2024. All rights reserved.