我正在爲我的前端使用Reactjs的Web應用程序。我阻止用戶訪問某些頁面,例如他們已登錄。我的問題是如何讓用戶訪問他們預期的網址,而不是將他們重定向到我目前所做的主頁。登錄後將用戶重定向到指定的網址Reactjs
我的路線是
<Switch>
<Route path="/desired-page" component={requireAuth(DesiredPage)} />
<Route path="/new-page" component={requireAuth(NewPage)} />
</Switch>
我requireAuth.js是
export default function(ComposedComponent) {
class Authenticate extends React.Component {
componentDidMount() {
if (!this.props.isAuthenticated) {
this.props.addFlashMessage({
type: 'error',
text: 'You need to login to access this page'
});
this.context.router.history.push('/login');
}
}
render() {
return (
<ComposedComponent {...this.props} />
)
}
}
Authenticate.propTypes = {
isAuthenticated: PropTypes.bool.isRequired,
addFlashMessage: PropTypes.func.isRequired
}
Authenticate.contextTypes = {
router:PropTypes.object.isRequired
}
function mapStateToProps(state) {
return {
isAuthenticated: state.auth.isAuthenticated
}
}
return connect(mapStateToProps, { addFlashMessage })(Authenticate);
}
你的意思是他們登錄後?你沒有顯示那部分代碼。在內部'if(!this.props.isAuthenticated){'將URL保存爲某種全局狀態(例如,您的redux商店)。然後在成功登錄後重定向到該頁面。 –
是的,他們登錄後。我想到了這一點,但如何實施已成爲一項挑戰 – Dayvino
將網址保存到全球商店並檢索它一直是我面臨的主要挑戰。你能給一個指針嗎? – Dayvino