У меня проблема, все мои JWT работают без токена, но когда я перезагружаюсь, я теряю всю аутентификацию.
Поэтому я пытаюсь получить постоянный токен.с использованием местного хранилища.но это не сработало.
Я пытаюсь проверить, подходит ли длительность токена для постоянной аутентификации.Я думаю, что мой код правильный, но не знаю, где ошибка.Я думаю, что это в аутентификации службы.Но я не знаю почему.
Код для входа в NodeJS
exports.login = (req, res, next) => {
Userbo.findOne({ email: req.body.email }).then(
(userbo) => {
if (!userbo) {
return res.status(401).json({
error: new Error('User not found!')
});
}
bcrypt.compare(req.body.password, userbo.password).then(
(valid) => {
if (!valid) {
return res.status(401).json({
error: new Error('Incorrect password!')
});
}
const token = jwt.sign(
{ userId: userbo._id },
'RANDOM_TOKEN_SECRET',
{ expiresIn: 7200 });
res.status(200).json({
userId: userbo._id,
token: token,
role : userbo.role,
expiresIn: 7200,
});
}
).catch(
(error) => {
res.status(500).json({
error: error
});
}
);
}
).catch(
(error) => {
res.status(500).json({
error: error
});
}
);
}
Angular auth.service
login(email: string, password: string) {
return new Promise((resolve, reject) => {
this.http.post(
'http://localhost:3000/api/authbo/login',
{ email: email, password: password })
.subscribe(
(authData: { token: string, userId: string, role: string, expiresIn: Number }) => {
this.token = authData.token;
this.userId = authData.userId;
localStorage.setItem('id_token', authData.token);
const expiresAt = moment().add(authData.expiresIn.valueOf(), 'second');
localStorage.setItem("expires_at", JSON.stringify(expiresAt.valueOf()));
this.role = authData.role;
this.isAuth$.next(true);
console.log('LOGIN' + this.isAuth$);
resolve();
},
(error) => {
reject(error);
}
);
});
}
logout() {
this.isAuth$.next(false);
this.userId = null;
this.token = null;
this.role = null;
localStorage.removeItem("id_token");
localStorage.removeItem("expires_at");
}
public isLoggedIn() {
return moment().isBefore(this.getExpiration());
}
getExpiration() {
const expiration = localStorage.getItem("expires_at");
const expiresAt = JSON.parse(expiration);
return moment(expiresAt);
}
Я не знаю, хорошо ли создан токен?кто-нибудь может мне помочь?:)