Передать токен доступа в заголовке с редиректом в JavaScript - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь реализовать аутентификацию на основе токенов с помощью node.js.Генерация токенов работает.Когда пользователь входит в систему, токен сохраняется в файле cookie браузера.Моя проблема заключается в том, что я могу прочитать токен из cookie-файла с node.js на сервере, потому что он передается при каждом запросе, но, насколько я знаю, лучше передавать токен в заголовке как x-access-tokenи я не знаю, возможно ли это при простой загрузке страницы.

Например, когда я вхожу в систему, получаю и сохраняю токен, но после этого я должен быть перенаправлен в защищенное место (например, через окно.open ("/ protected", "_self")), и я не могу установить заголовок этого запроса.

Мой код JavaScript для входа в систему:

var httpRequest = new XMLHttpRequest();
var params = 'username=' + username.value + '&password=' + password.value;

httpRequest.open('POST', '/login', true);
httpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
httpRequest.responseType = "json";

httpRequest.onreadystatechange = function() {
        if(httpRequest.readyState == 4 && httpRequest.status == 200) {
            if(httpRequest.response.success){
                setCookie("loginToken", httpRequest.response.token, 1);
                window.open("/protected/", "_self");
            }
            showToast();
        }
}
httpRequest.send(params);

Node.js читаеттокен из cookie с cookie-парсером при открытии / protected:

var token = req.cookies.loginToken;

Все работает, но с cookie не токен в заголовке.Должен ли я использовать метод cookie, и если нет, есть ли способ передать токен в заголовке?

1 Ответ

0 голосов
/ 24 октября 2018

Не используйте метод cookie, вместо этого сохраняйте токен в вашей user_table в базе данных, соответствующий user_id, когда логин пользователя и проверочный токен передаются в заголовке для каждого действия, если токен действителен, затем разрешите пользователю выполнять любое действие, иначе выйдите из него, еслитокен недействителен и удалите токен при выходе из системы.

...