Интернет и мобильный, где хранить токены / куки - PullRequest
0 голосов
/ 01 февраля 2019

Я разрабатываю программу, которая состоит из внутреннего сервера, мобильного приложения и веб-приложения.Я добавил токен 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).Я не хочу иметь отдельный код для входа в систему.

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете легко добавить новый файл cookie во внешний интерфейс с помощью document.cookie = ... ( Файл cookie MDN )

В вашем промежуточном программном обеспечении вам просто нужно проанализировать файл cookie вместо некоторыхBearer токен или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...