현재 React
및 React Router V4
인 인증/로그인 흐름을 구현 중입니다. 그러나 나는 내 아이디어를 구현하기 위해 작동하는 리디렉션 "스키마"를 찾기 위해 고심하고있다.대응 라우터 인증 리디렉션
- 경우/그녀가 에 "/ 로그인"을 재 취득해야하며, 특정 로그인 페이지 구성 요소가 렌더링 다음과 같이
상황이다. 내 응용 프로그램에 대한 등록 및 로그인 링크를 공유 할 수 있도록 시스템의 요구 사항이어야합니다.
- 사용자가 인 경우 사용자는 원래 방문하고 싶은 경로로 리디렉션되어야합니다.
내 현재의 구현 :
항목 구성 요소
export default class Entry extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<Router>
<Routes />
</Router>
);
}
}
경로의 구성 요소 (인증 검사가 일어난다 여기)
class Routes extends PureComponent {
componentDidMount() {
this.props.loadUser(); // async method (redux) loads the actual logged in user
}
render() {
return (
<Switch>
<Route path="/login" render={() => (!this.props.user.username ? <LoginPage {...this.props}/> : <Redirect to="/app" />)} />
<Route path="/app" render={() => (this.props.user.username ? <AppPage {...this.props} /> : <Redirect to="/login" />)} />
<Route exact path="/" render={props => <Redirect to="/app" />} />
</Switch>
);
}
}
export default Routes;
응용 프로그램 구성 요소 (중첩 된 라우팅
- 사용자가 로그인하지만 내 응용 프로그램 사용자는 이제
/app/about
을 방문하고 싶어 - 의 탭을 닫은 다음 무슨 일이 일어나고 다음과 같은 경우 여기)
export default class App extends React.Component { constructor(props) { super(props); } render() { const { match, user, logout } = this.props; return ( <Switch> <Route path={`${match.path}/about`} component={About} /> <Route path={`${match.path}`} component={Home} /> </Switch> ); } }
문제는 이제 발생
- 경로 구성 요소가로드되지만
this.props.user.username
은null
- 사용자는으로 리디렉션됩니다.
- 이제 REDUX 저장소를 업데이트
this.props.user.username
있다this.props.loadUser()
비동기 방식은 더 이상하지null
하고 다음 사용자는/app
로 리디렉션됩니다하지만 그는 원래/app/about
를 방문하고 싶었다.
그래서 나에게 두통 만드는 줄은 사용자가 그/그녀가 처음 방문하고 싶은 URL로 리디렉션됩니다 있도록
<Route path="/login" render={() => (!this.props.user.username ? <LoginPage {...this.props}/> : <Redirect to="/app" />)} />
가 어떻게이 특정한 방식을 처리해야입니까?
어쩌면 나의 전반적인 접근 방식은 조금 이상합니다. 당신은 내가이 주제에 대한 자신의 큰 문서에가는 것이 좋습니다 반응 라우터의 V4를 사용하고 있기 때문에 사전에
덕분에, 나는 모든 도움 :
https : // stackoverflow.co.kr/questions/47535919/redirect-to-login-success-after-a-login-success/47536539 # 47536539 도움이 될만한 질문이 – willwoo
이 문제를 지적 해 주셔서 감사 드리며, 결국 시도해 보았습니다. @ Lokuzt 솔루션으로갔습니다. 이게 내가 사용하는 케이스에 더 잘 맞는다. – grahan