ユーザーがパスワードを忘れてしまった場合は、入力したページに移動するためのリンクをクリックしますユーザー名。ユーザー名が一致すると、ユーザー名に関連付けられた電子メールに一意に生成されたURLが送信されます。たとえば:ReactJSとreact-router-dom v4のユーザー固有の固有のURLを処理するルート
http://localhost:8000/auth/security_questions/0e51706361e7a74a550e995b415409fdab4c66f0d201c25cb4fa578959d11ffa
このすべてが正常に動作しますが、私はReact
とreact-router-dom v4
を使用してルーティングのフロントエンドでこれを処理する方法を把握しようとしています。私はこのルートを作った。
<Route exact path='/auth/security_questions/:key' component={SecurityQuestions} />
セキュリティに関する質問に関連する正しいコンポーネントが読み込まれますが、これは後の動作ではありません。結局のところ、それはあなたがsecurity_questions/
の後に置く何かをとります。
コンポーネントをロードする前に、:key
をデータベースと照合する必要があります。
私はいくつかのことについてはよく分からない:
1)私は、データベースに対して検証する値として渡すことができるように:key
部分を解析する方法。
2)確認処理の一般的な考え方はありますが、React
の指示方法はわかりません。「OKキーがデータベースで確認されました。コンポーネントの読み込みが完了しました。」
私はそれはのような一般的な外観になると思い:
// ./containers/security_questions.js
componentWillMount() {
this.props.verifyKey(:key);
}
そしてアクション:
// ./actions/authentication.index.js
export function verifyKey({ :key }) {
return function(dispatch) {
axios
.post(
`${ROOT_URL}/api/auth/security_questions/`,
{ :key }
)
.then(response => {
dispatch('Finish loading the rest of the component')
})
.catch(error => {
dispatch(authError(error.response.data.non_field_errors[0]));
});
}
}
それとも代わりに、それはコンポーネントをロード仕上げの、それは別のURLにちょうどルートべき保護されたルートです。私はあなたの減速で、いくつかの状態を設定しますセキュリティの質問の成功に続いて
とレンダリング -
componentWillMount() {
this.props.verifyKey(this.props.match.params.key);
}
がhttps://reacttraining.com/react-router/web/example/url-params
を参照してください: