javascript - 范围访问护照-jwt
问题描述
有人可以向我详细解释为什么 /profile 的路由可以访问用户对象。我目前正在学习 JavaScript 和 NodeJS,您的回答将对我的学习有很大帮助谢谢大家。
app.post('/login',function (req, res) {
let email = req.body.email;
let password = req.body.password;
User.getUserByEmail(email, (err, user) => {
if (err) throw err;
if (!user) {
return res.json({
success: false,
message: "User not found!"
});
}
User.comparePassword(password, user.password, (err, isMatch) => {
if (err) throw err;
if (isMatch) {
var token = jwt.sign(user.toJSON(), config.JWT_SECRET, {
expiresIn: '15m'
});
res.json({
success: true,
token: token,
user: {
id: user._id,
email: user.email
}
});
} else {
return res.json({
success: false,
message: "Password incorrect!"
});
}
})
});
});
app.get('/profile', passport.authenticate('jwt', {
session: false
}), (req, res) => {
res.json({user: req.user});
});
解决方案
这是因为您的passport.authenticate()
呼叫填充user
到req
.
来自passports.org:
app.post('/login',
passport.authenticate('local'),
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
你的路由是一样的,只是你的路径和身份验证方法不同。
有关更多信息,请参阅文档:http: //www.passportjs.org/docs/authenticate/
推荐阅读
- c++ - 使用 SDL2 和 OpenGL 编译一个简单的三角形
- c# - ConnectionString 属性未初始化错误
- laravel - Laravel api 头请求
- python - 将 map lambda 转换为列表理解
- excel - 在PowerPoint中使用VBA粘贴excel图表并保持源格式
- php - 如何缓存 rand() 的结果?
- spark-streaming - NiFi & Spark 集成错误:java.lang.NoClassDefFoundError: org/apache/http/nio/protocol/HttpAsyncResponseConsumer
- reactjs - es6 javascript箭头函数
- kubernetes - 如何在 Kubernetes 中从 pod 运行命令到主机
- mysql - sql优化:通过子查询或自己的查询计算所有行/其他改进