Реагировать на хранение токенов в локальном хранилище - PullRequest
0 голосов
/ 06 ноября 2019

Я получил следующий ответ от почтового запроса React Axios ...

{
    "Id": 1,
    "UserName": "***",
    "Password": null,
    "Email": "***",
    "FirstName": "Steven",
    "Surname": "Collins",
    "CompanyName": "***",
    "OrisecAccountNumber": "***",
    "Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6InN0ZXZlLmNvbGxpbnNAb3Jpc2VjLmNvLnVrIiwicm9sZSI6WyJPcmlzZWNBZG1pbiIsIkluc3RhbGxlckFkbWluIl0sIm5iZiI6MTU3MzA2OTg2NiwiZXhwIjoxNTczMDcwNzU2LCJpYXQiOjE1NzMwNjk4NjYsImlzcyI6Ik9yaXNlYyJ9.UgUbLpM0Zs0KYT4XRy20Tkfc9SLgT-8EhhZziahper8",
    "TokenCreatedOnUtc": "0001-01-01T00:00:00",
    "TokenExpiresInMinutes": 15,
    "Roles": [
        "OrisecAdmin",
        "InstallerAdmin"
    ]
}

Запрос POST выглядит следующим образом ...

instancePost.post('/identity/account/login', {
    username: '***',
    password: '***'
})
    .then(function (response) {
        localStorage.setToken('access_token', JSON.stringify(response.data));
        localStorage.setToken('refresh_token', JSON.stringify(response.data));
        console.log(response);
    })
    .catch(function (error) {
        console.log(error);
    });

}

Моя локальная служба хранения выглядит следующим образом ...

// LocalStorageService.js
const LocalStorageService = (function () {
    var _service;
    function _getService() {
        if (!_service) {
            _service = this;
            return _service
        }
        return _service
    }
    function _setToken(tokenObj) {
        localStorage.setItem('access_token', tokenObj.access_token);
        localStorage.setItem('refresh_token', tokenObj.refresh_token)
    }
    function _getAccessToken() {
        return localStorage.getItem('access_token');
    }
    function _getRefreshToken() {
        return localStorage.getItem('refresh_token');
    }
    function _clearToken() {
        localStorage.removeItem('access_token');
        localStorage.removeItem('refresh_token');
    }
    return {
        getService: _getService,
        setToken: _setToken,
        getAccessToken: _getAccessToken,
        getRefreshToken: _getRefreshToken,
        clearToken: _clearToken
    }
})();
export default LocalStorageService;

Я проверил POST-запрос в Postman, и он работает нормально. У меня вопрос, как мне сохранить значение токена в локальном хранилище. В настоящее время я делаю это, в котором хранится имя, но не фактический токен.

 localStorage.setToken('access_token', JSON.stringify(response.data));
            localStorage.setToken('refresh_token', JSON.stringify(response.data));

Спасибо.

1 Ответ

0 голосов
/ 06 ноября 2019

Кажется, что ваша localstorage функциональность предназначена для access_token и refresh_token, но предоставляется только токен JWT. Кроме того, похоже, что вы используете setToken вместо setItem, как описано здесь

изменить

 localStorage.setToken('access_token', JSON.stringify(response.data));

на

localStorage.setItem('access_token', response.data.Token);

Поскольку токен является строковым типом, вы можете получить к нему доступ следующим образом:

localStorage.getItem('access_token', response.data.Token);
...