node.js - 护照认证,需要基本解释
问题描述
有人可以解释一下是什么以及为什么我们在passport.authenticate的末尾包含(req,res,next),到目前为止我在教程中看到的是我们需要它,因为我们希望它立即启动,但我真的不明白。
这是代码:
router.post('/login', (req, res, next) => { <br>
passport.authenticate('local', { <br>
successRedirect: '/songs/list', <br>
failureRedirect: '/users/login', <br>
failureFlash: true <br>
})(req, res, next); <---- *This line*
解决方案
您正在声明一个函数并立即调用它。您这样做是为了req
访问passport.authenticate
.
所以如果你需要访问里面的请求对象,passport
你需要一个自定义回调。你的代码似乎没有使用该req
对象,所以你简单使用
app.post("/protected",passport.authenticate("local",{
successRedirect:"/user",
failureRedirect:"/login"
}),function(req,res){
});
如果您的应用程序需要访问 req 对象,那么:
app.get('/protected', function(req, res, next) {
passport.authenticate('local', function(err, user, profile) {
if (err) { return next(err) }
if (!user) { return res.redirect('/signin') }
res.redirect('/account');
})(req, res, next);
});
推荐阅读
- asp.net-mvc - 当我将会话的当前值与 null 进行比较时发生异常
- javascript - 需要将 laravel 中的表中的 id 传递给另一个刀片中的脚本
- java - 避免在春季每次检查 dto 的非空和非空变量
- android - Firebase 动态链接 Android 上的多个重定向
- sql-server - 选择时的 SQL Server 共享锁
- ajax - 在浏览器中导航时丢失动态内容
- java - 如何使用 junit 5 (Jupiter) 模拟 RestTemplate 交换
- angular - Angular 4 错误“预期 2-3 个参数,但得到 1 个”
- hibernate - 如何在 SpringBoot 和 SpringDataJPA/Hibernate 中在运行时切换数据库?
- javascript - Laravel 5.6 通过 ajax 调用将刀片注入视图