我正在使用我的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);
}
答案 0 :(得分:0)
我认为在默认快递请求中有一个名为req.currentUser的变量名称。
您可以在params / header / query中将数据存储在GET请求中,并在req.query / req.params / req.headers中访问它们。
对于POST / PUT / DELETE在正文中存储数据,你可以在req.body中取出它们。
可以告诉我你的邮递员api发送请求和需求数据吗?