Files
freeCodeCamp/curriculum/challenges/chinese/06-quality-assurance/advanced-node-and-express/logging-a-user-out.md
Oliver Eyton-Williams dec409a4bd fix: s/localeTitle/title/g
2020-10-06 23:10:08 +05:30

2.0 KiB

id, challengeType, forumTopicId, title
id challengeType forumTopicId title
58965611f9fc0f352b528e6c 2 301560 用户退出登录

Description

创建退出登录的逻辑是比较简单的。只要用户尝试退出登录,路由就应重定向到主页,而不应该显示任何其他页面。

在 passport 里,只需要在重定向前调用 req.logout(); 即可完成用户的退出登录。

app.route('/logout')
  .get((req, res) => {
    req.logout();
    res.redirect('/');
});

你可能注意到我们还没有处理 404 错误,这个错误码代表页面无法找到。在 Node.js 中我们通常会用如下的中间件来处理,请在所有路由之后添加这段代码:

app.use((req, res, next) => {
  res.status(404)
    .type('text')
    .send('Not Found');
});

完成上述要求后,你可以在下方提交你的页面链接。如果你遇到了问题,可以参考 这里 的答案。

Instructions

Tests

tests:
  - text: <code>req.Logout</code> 应在 <code>/logout</code> 中调用。
    testString: getUserInput => $.get(getUserInput('url')+ '/_api/server.js') .then(data => { assert.match(data, /req.logout/gi, 'You should be calling req.logout() in your /logout route'); }, xhr => { throw new Error(xhr.statusText); })
  - text: 退出登录后应重定向到主页 /
    testString: getUserInput => $.get(getUserInput('url')+ '/logout') .then(data => { assert.match(data, /Home page/gi, 'When a user logs out they should be redirected to the homepage'); }, xhr => { throw new Error(xhr.statusText); })

Challenge Seed

Solution

/**
  Backend challenges don't need solutions, 
  because they would need to be tested against a full working project. 
  Please check our contributing guidelines to learn more.
*/