2

render props を使用してロールベースの認証を実装したいと考えています。3 つのユーザー タイプがあり、各ユーザー タイプに、ナビゲーション バーのさまざまな部分とアプリケーションのさまざまなページへのアクセスを許可したいと考えています。

実装方法がわかりません。何か提案はありますか?HOCを使用してみましたが、うまくいきませんでした。

4

1 に答える 1

4

これがそれを行う1つの方法です。

ユーザーがローカルストレージに保存されていると仮定すると(またはreduxの状態で保存できます)、

var user = localStorage.getItem('user')
if (user) {
   user = JSON.parse(user)
}

内側return()

            <Switch>
                {/*any user*/}
                <Route exact path='/' component={Home}/>
                <Route exact path='/home' component={Home}/>
                <Route exact path='/about' component={About}/>
                <Route exact path='/contact' component={Contact}/>
                <Route exact path='/register' component={Register}/>

                {/*admin*/}
                {user && user.role === "ADMIN" &&
                <>                  
                    <Route path='...' component={...}/>
                    <Route path='...' component={...}/>
                    <Route path='...' component={...}/>
                </>

                {/*user*/}
                {user && user.role === "USER" &&
                <>                  
                    <Route path='...' component={...}/>
                    <Route path='...' component={...}/>
                    <Route path='...' component={...}/>
                </>

                <Route component={NotFoundPage}/>
            </Switch>
于 2019-07-05T05:29:06.037 に答える