gpt4 book ai didi

javascript - 当我使用PrivateRoute时,我总是在重新加载页面时转到登录页面一次

转载 作者:行者123 更新时间:2023-12-04 07:53:07 25 4
gpt4 key购买 nike

目前,我使用以下PrivateRoute来判断用户是否登录,如果登录,则将用户带到指定页面,如果没有,则将用户带到登录页面。但是,当我重新加载页面时,它会暂时转换到登录页面,然后转换到根页面,并且我无法再次显示/accounts 或/notes 页面。
直接在地址栏中键入时也会出现这种现象。
如果您对此有更多了解,如果您能告诉我为什么会发生这种减少,我将不胜感激。
enter image description here

import React from 'react'
import { Route, Redirect } from 'react-router-dom'
import { connect } from 'react-redux'

const PrivateRoute = ({ component: Component, auth, ...rest }) => (
<Route
{...rest}
render={props => {
if (auth.isLoading) {
return <h2>Loading...</h2>;
} else if (auth.isAuthenticated) {
return <Component {...props} />;
} else {
return <Redirect to='/login' />;
}
}}
/>
);

const mapStateToProps = state => ({
auth: state.auth
})

export default connect(mapStateToProps)(PrivateRoute);

行动
export const login = (username, password) => dispatch => {

const config = {
headers: {
'Content-Type': 'application/json',
}
};

const body = JSON.stringify({ username, password });

axios
.post(`${url}/api/auth/login`, body, config)
.then((res) => {
dispatch({
type: LOGIN_SUCCESS,
payload: res.data,
});
})
.catch((err) => {
dispatch(returnErrors(err.response.data, err.response.status));
dispatch({
type: LOGIN_FAIL,
});
});
};

最佳答案

问题是每次页面重新加载时,您在 redux 中的身份验证状态都会丢失,因此您无法再识别身份验证。为了防止您可以将状态保存在 localStorage 中或使用 redux-persist为了它。

关于javascript - 当我使用PrivateRoute时,我总是在重新加载页面时转到登录页面一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66849114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com