Я использую Express / Node.js, с mongoDB.Когда пользователь входит в систему / регистрируется, он выдает JSON Web Token (JWT) и перенаправляется в «homepage.hbs».Как отобразить имя пользователя на домашней странице текущего пользователя, вошедшего в систему?
Вот мой код для входа в систему пользователя.
Auth.js
$("#login-form").submit(function (event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: '/users/login',
dataType: 'json',
data: {
'user_name': event.target.inputUsername.value,
'password': event.target.inputPassword.value
},
success: function(token){
$(location).attr('href', '/homepage' );
},
Index.js
router.get('/homepage', function(req, res, next) {
try {
var jwtString = req.cookies.Authorization.split(" ");
var profile = verifyJwt(jwtString[1]);
if (profile) {
res.render('homepage');
}
}catch (err) {
res.json({
"status": "error",
"body": [
"Not logged in!"
]
});
}
});
Users.js
router.post('/login', function(req, res, next){
var username = req.body.user_name;
var password = req.body.password;
User.findOne({'user_name': username}, function (err, user) {
if (err)
res.send(err);
if (user) {
if (user.validPassword(password)) {
user.access_token = createJwt({user_name: username});
user.save();
res.cookie('Authorization', 'Bearer ' + user.access_token);
res.json({'success' : 'currentlyloggedIn'});
}
else {
res.status(401).send({
"status": "error",
"body": "Incorrect combination"
});
}
}
else
{
res.status(401).send({
"status": "error",
"body": "Username not found"
});
} }); });
/*Creates a JWT*/
function createJwt(profile) {
return jwt.sign(profile, 'JWT password', {
expiresIn: '5d'
});
}