Я разрабатываю программу, которая состоит из внутреннего сервера, мобильного приложения и веб-приложения.Я добавил токен JWT в свое мобильное приложение и храню его в асинхронном хранилище.Однако я не могу найти подходящий способ сделать это на веб-сервере.
Я создал файл промежуточного программного обеспечения для создания и проверки правильности токена.В своем маршруте API я делаю следующее
router.post('/:url', middleware.checkToken, (req, res, next)=>
{
...
}
Итак, каждый раз, когда я вызываю этот API, файл промежуточного программного обеспечения проверяет токен.В моем мобильном приложении я храню токен в асинхронном хранилище и передаю его на веб-сервер.
Однако в браузере я хочу хранить токен в cookie, а не в локальном хранилище.Как я могу сделать это без изменения своего кода?
Это API для входа в систему с мобильного устройства.
router.post('/login', (req,res,next) => {
let username = req.body.username;
let password = req.body.password;
User.findOne({'username' : username})
.exec()
.then(doc =>{
if(doc.validPassword(password))
{
let token = jwt.sign({
id: doc.id,
email: doc.email,
},
config.secret,
{ expiresIn: '24h' // expires in 24 hours
}
);
res.status(200).json({
success: true,
message: 'Authentication successful!',
token: token
});
}
else{
// invalid credentials
res.send(403).json({
success: false,
message: 'Incorrect username or password'
});
}
})
})
Я не хочу отдельный файл для входа в систему через Интернет.Я просто хочу использовать тот же код, не копируя в другой файл.
Должен ли я написать другой код для мобильных устройств и веб-сайтов, но один из них отправляет файл cookie, а другой - простой токен?Есть ли способ достичь этого с помощью простого решения?
Вкратце:
Мобильные пользователи отправляют учетные данные на страницу мобильного входа и получают токен.Веб-пользователи отправляют учетные данные на веб-страницу и получают cookie (токен находится внутри cookie).Я не хочу иметь отдельный код для входа в систему.