Я работаю над аутентификацией с JWT для простого React-Redux/Node
проекта. Мне трудно работать, чтобы войти в систему после обновления или закрытия браузера. Токен корректно сохраняется в локальном хранилище и остается после обновления браузера, как и должно быть. В моем конструкторе файлов приложения. js я добавил функцию для отправки действия getLoggedInUser()
, должен запускаться fetch()
, отправив токен в заголовке запроса в API, который, в свою очередь, проверит этот токен и отправит ответ. Тем не менее, похоже, что моя fetch()
функция никогда не выполняется в моем коде, и я не могу понять, что я делаю неправильно. Любая помощь приветствуется. Ниже мой код:
authActions. js
//persist a login when your user revisits the page
export const getLoggedInUser = () => {
console.log('here') // this is run
return (dispatch) => { //but seems this never runs
const token = localStorage.getItem('token'); //doesnt run
console.log(token) /doesn't run
if (token) {
return fetch(url + 'getloggeduser', {
method: "GET",
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
})
.then(res => res.json())
.then(res => {
if (res.error) {
localStorage.removeItem('token')
}
else dispatch(logInSuccess(res.user))
})
}
}
};
Приложение. js
import React, { Component } from 'react';
import { connect } from 'react-redux'
import { getLoggedInUser } from './Store/Actions/authActions'
class App extends Component {
componentDidMount() {
console.log('app component mounts')
this.props.getLoggedInUser();
}
render() { ... }
const mapDispatchToProps = (dispatch) => {
return {
getLoggedInUser: () => dispatch(getLoggedInUser)
}
}
export default connect(null, mapDispatchToProps)(App)