[登录后,我无法注销,因为express-session没有删除,要注销,我必须手动从mongo中删除会话集合,mongo是与用户和资源分开的单独集合,您也可以发布完整代码,寻找https://github.com/roshantak44/nodejs-blog-tutorial
// controllers / logout.js
module.exports = (req, res) => {
req.session.destroy()
res.redirect('/')
}
// middleware / auth.js
const User = require('../database/models/User')
module.exports = (req, res, next) => {
User.findById(req.session.userId, (error, user) => {
if (error || !user) {
return res.redirect('/')
}
next()
})
}
// middleware / redirectIfAuthenticated.js
const User = require('../database/models/User')
module.exports = (req, res, next) => {
if (req.session.userId) {
return res.redirect('/');
}
next()
}
// app.edge
<!-- Navigation-->
<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
<div class="container"><a class="navbar-brand" href="index.html">Start Bootstrap</a>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">Menu<i class="fa fa-bars"></i></button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item"><a class="nav-link" href="/">Home</a></li>
<li class="nav-item"><a class="nav-link" href="/posts/new">New Post</a></li>
@if(!auth)
<li class="nav-item"><a class="nav-link" href="/auth/login">Login</a></li>
<li class="nav-item"><a class="nav-link" href="/auth/register">Register</a></li>
@else
<li class="nav-item"><a class="nav-link" href="/auth/logout">Logout</a></li>
@endif
</ul>
</div>
</div>
</nav>
@!section('content')
<!-- Footer-->
尝试req.logOut():
module.exports = (req, res) => {
req.logOut()
req.session.destroy()
res.redirect('/')
}