Я в основном отправляю свои данные JSON с двумя заголовками.Когда я смотрю детали заголовка через инструменты разработки Chrome, он показывает, что заголовки отправлены.Но он в консоли отлавливает ошибку, сообщая, что код ошибки 401 не авторизован.
После входа в систему я назначаю полученное значение токена локальному хранилищу.В локальном хранилище также могут быть найдены и сохранены значения.Поскольку я разрабатываю это приложение с использованием технологий стека MERN, я установил значения заголовков по умолчанию в файле index.js, как показано ниже:
let token=localStorage.getItem('token');
if(token){
axios.defaults.headers.common['Content-Type']='application/x-www-form-urlencoded';
let auth_head='JWT '+localStorage.getItem('token');
axios.defaults.headers.common['Authorization']=auth_head;
console.log(auth_head);
}
После ошибки я вижу вкладку Сеть разработки Chrome.Там вставка книги (данных) выделена красным.Поэтому я щелкаю по нему и просматриваю значения его заголовков.
Request URL: http://localhost:4000/book/
Request Method: POST
Status Code: 401 Unauthorized
Remote Address: [::1]:4000
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 33
Content-Type: application/json; charset=utf-8
Date: Sun, 28 Apr 2019 10:02:53 GMT
ETag: W/"21-wNNi+vjO8gt//ITmWfqLf4aE+Ic"
X-Powered-By: Express
Provisional headers are shown
Accept: application/json, text/plain,
Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJzYXNoaWtzdSIsImlhdCI6MTU1NjQ0NTczMiwiZXhwIjoxNTU2NTMyMTMyfQ.3r2rQNA10bvFOEvI9vyED14rwFHg9oA633cvm4hp7x8
Content-Type: application/json;charset=UTF-8
Origin: http://localhost:3000
Referer: http://localhost:3000/insert_book
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
Просмотр также подтвердил, что мой токен поставляется с данными.Но это говорит несанкционированный.Кстати, в моем пользовательском контроллере методы авторизации выглядят так:
export const authorization = (req, res, next) => {
if (req.user) {
next();
} else {
return res.status(401).json({ message: 'Unauthorized User !' })
}
};
В файле server.js я настраиваю настройку JWT следующим образом:
//JWT setup
app.use((req, res, next) => {
if (req.headers && req.headers.authorization && req.headers.authorization.split(' ')[0] === 'JWT') {
jsonwebtoken.verify(req.headers.authorization.split(''), [1], 'RESTFULAPIs', (err, decode) => {
if (err) req.user = undefined;
req.user = decode;
//console.log(req.user );
//console.log(decode);
next();
});
} else {
req.user = undefined;
next();
}
});
Я не могу понять, гдеошибка в моем кодеПожалуйста, помогите мне, ребята.