我正在我的一个Express应用程序中研究几个API端点,用于记笔记。到目前为止,我已经使用JWT构建了身份验证,现在我正在尝试为经过身份验证的用户注释创建CRUD端点。我遇到的问题是在当前登录的用户之间创建一个关联,如果他们有权对该项目进行更改。
在我的
authentication
控制器我尝试对请求进行设置,以说明已验证用户是谁:
exports.signin = function(req, res, next) {
req.currentUser = req.user;
res.send({ token: tokenForUser(req.user) });
}
我在用户模型中设置了一个方法,用于检查对象是否相同:
userSchema.methods.canAccess = function(object) {
return this.equals(object) ||
(object.owner && object.owner == this.id)
}
最后,在我创建笔记的过程中,我的目标是能够做一些类似的事情
if ( req.currentUser.canAccess(req.user) )
但我遇到的问题是
currentUser
未定义。
我觉得我在这里的某个地方犯了一个关键的错误,任何帮助都会得到感激。
更新(路由)
module.exports = function(app) {
app.get('/', requireAuth, (req, res) => {
res.send({ message: `Welcome back ${res.req.user.email}` })
});
app.post('/signin', requireSignIn, Authentication.signin);
app.post('/signup', Authentication.signup);
app.post('/notes/create', requireSignIn, Notes.create);
}