完整的用户资料
Complete user profiles
我想为当前登录的用户做一个“完整的用户配置文件”,但是当我用邮递员测试api时,给出的结果显示“未经授权”。顺便说一句,我正在使用护照中间件。非常感谢任何提示和帮助:)
下面是我的更新代码:
router.post('/myprofile', passport.authenticate('jwt',{session: false}),
(req,res)=>{
const {errors, isValid}= validateProfileInput(req.body);
if(!isValid){
res.status(400).json(errors);
}
const profileFields={};
profileFields.user =req.user.id;
if(req.body.icNumber)profileFields.icNumber= req.body.icNumber;
if(req.body.phoneNumber)profileFields.phoneNumber= req.body.phoneNumber;
if(req.body.dob)profileFields.dob= req.body.dob;
if(req.body.gender)profileFields.gender= req.body.gender;
if(req.body.address1)profileFields.address1= req.body.address1;
if(req.body.address2)profileFields.address2= req.body.address2;
if(req.body.city) profileFields.city=req.body.city;
if(req.body.state) profileFields.state=req.body.state;
if(req.body.zip) profileFields.zip=req.body.zip;
Profile.findOne({user:req.user.id}).then(profile=>{
if(profile){
//update
Profile.findOneAndUpdate(
{user:req.user.id},
{$set: profileFields},
{$set: { status: true }}
).then(profile=>{
res.json(profile);
})
// save profile
new Profile(profileFields).save().then(profile=>res.json(profile))
}
})
}
)
邮递员header:
邮递员body:
邮递员结果:
当您使用 jwt
创建令牌时,请使用一个基于您自己的数据创建令牌的函数...最终令牌是 token: "Bearer " + signedToken
,就像这样...
const jsonwebtoken = require('jsonwebtoken');
function issueJWT(user) {
const _id = user._id;
const expiresIn = '1d';
const payload = {
sub: _id,
iat: Date.now()
};
const signedToken = jsonwebtoken.sign(payload, PRIV_KEY, { expiresIn: expiresIn, algorithm: 'RS256' });
return {
token: "Bearer " + signedToken,
expires: expiresIn
}
}
当你想收到请求时,像这样设置你的邮递员
或在header授权密钥:Breare + spcace + Token
我想为当前登录的用户做一个“完整的用户配置文件”,但是当我用邮递员测试api时,给出的结果显示“未经授权”。顺便说一句,我正在使用护照中间件。非常感谢任何提示和帮助:)
下面是我的更新代码:
router.post('/myprofile', passport.authenticate('jwt',{session: false}),
(req,res)=>{
const {errors, isValid}= validateProfileInput(req.body);
if(!isValid){
res.status(400).json(errors);
}
const profileFields={};
profileFields.user =req.user.id;
if(req.body.icNumber)profileFields.icNumber= req.body.icNumber;
if(req.body.phoneNumber)profileFields.phoneNumber= req.body.phoneNumber;
if(req.body.dob)profileFields.dob= req.body.dob;
if(req.body.gender)profileFields.gender= req.body.gender;
if(req.body.address1)profileFields.address1= req.body.address1;
if(req.body.address2)profileFields.address2= req.body.address2;
if(req.body.city) profileFields.city=req.body.city;
if(req.body.state) profileFields.state=req.body.state;
if(req.body.zip) profileFields.zip=req.body.zip;
Profile.findOne({user:req.user.id}).then(profile=>{
if(profile){
//update
Profile.findOneAndUpdate(
{user:req.user.id},
{$set: profileFields},
{$set: { status: true }}
).then(profile=>{
res.json(profile);
})
// save profile
new Profile(profileFields).save().then(profile=>res.json(profile))
}
})
}
)
邮递员header:
邮递员body:
邮递员结果:
当您使用 jwt
创建令牌时,请使用一个基于您自己的数据创建令牌的函数...最终令牌是 token: "Bearer " + signedToken
,就像这样...
const jsonwebtoken = require('jsonwebtoken');
function issueJWT(user) {
const _id = user._id;
const expiresIn = '1d';
const payload = {
sub: _id,
iat: Date.now()
};
const signedToken = jsonwebtoken.sign(payload, PRIV_KEY, { expiresIn: expiresIn, algorithm: 'RS256' });
return {
token: "Bearer " + signedToken,
expires: expiresIn
}
}
当你想收到请求时,像这样设置你的邮递员
或在header授权密钥:Breare + spcace + Token