2017-03-02 4 views
1

私はfeathersjs認証フック(または何でも)で馬鹿な質問をしています。これはコメント付きのコードです:Feathersjs管理者ロール(または認証チェック付きフェザーミドルウェア)

app.get('/admin', function (req, res) { 

    // i'd like to check here if (req.connection.isAdmin) then render page 

    res.render('admin/admin.html', { 
     title: 'admin' 
    }) 
    }); 

私はadminロールのためにユーザーを認証するためのユーザー認証フックを実装できます。どうやってやるの?

+0

私はこの同じ問題をhttps://github.com/feathersjs/feathers/issues/357で見つけましたが、回避策はなく、ページのリンクが壊れています。まだミドルウェアのフックを実装する方法を誤解しているか、カスタム認証ロジックを使用しています....接続資格情報でreq、resにアクセスできれば素晴らしいです。 – Victor

答えて

2

あなたは、私がこの他の質問に投稿された例を使用することができる必要があります:あなたのケースではFeathers Js Restrict Access To Page on Server Side

を、ユーザーが管理者であるかどうかを確認するためにいくつかのロジックを行う必要があります。デフォルトでは、Feathersが提供するJWTトークンにはuserIdしか含まれません。ユーザーレコードを取得して、ユーザーが管理者であるかどうかを確認できます。ここで

あなたはjwt.verifyブロック内に置くだろうかの例です:

jwt.verify(token, secret, function(err, decoded) { 
    if (err) { 
    return res.status(401).send('You are not authorized to view that page.'); 
    } 
    app.service('users') 
    .get(decoded.id) // Or _id if you're using MongoDB 
    .then(user => { 
     if (user.isAdmin) { 
     res.render('admin/admin.html', { 
      title: 'admin' 
     }) 
     } else { 
     return res.status(401).send('You are not authorized to view that page.'); 
     } 
    }) 
}); 

それは管理者のために、そう、サーバー上のJWTに値を追加するfeathers-authenticationの次のバージョンで可能になりますJWTペイロードにisAdminプロパティを追加することができます。プレリリース版が公開されると、これはかなり簡単になります。それまでは、上記の方法がおそらく最善の方法です。

+1

Marshall、ありがとう!私はあなたの答えを受け入れる。 – Victor

関連する問題