0

angularjs Web サイトのユーザー検証を行うために、expressJwt ( https://github.com/auth0/express-jwt ) を使用しています。誰でもこのページにアクセスできる URL (/username/somedata) があるという興味深い状況があります。ログインしていない場合、またはこのユーザーではない場合、パブリックとしてマークされたデータのみを取得します。ログインしていて正しいユーザーである場合、公開データと非公開データを取得します。

問題は、req.user から JWT (json Web トークン) にアクセスできるのは、/api (ログインが必要) で始まる任意のパスに限られることです...そして、このページはログインを必要としないため、落ちません。 /api の下。

/api の下にないパスで req.user へのアクセスを許可する方法はありますか? 別の考えは、データを要求して別のパスを使用する前に、ログインしているかどうかを確認することでした...

すなわち:

ログインしていない場合は常に次を使用します: /username/somedata (常に公開のみのデータ)

ログイン中: /api/username/somedata (出力する前に、ユーザーがデータの作成者であるかどうかを確認します。作成者が公開および非公開を出力する場合、それ以外の場合は公開のみ)

更新:複数のパスをテストしましたが、うまく機能していますが、別の方法で req.user にアクセスできるかどうかまだ知りたいので、まだ自分の質問には答えません。

4

1 に答える 1

0

それが最良のオプションかどうかはわかりませんが、次のオプションを使用します。

var jwt = require('express-jwt');    

var jwtCheck = jwt({
    secret: "secret"
});

router.get('/users', function(req, res) {
    jwtCheck(req, res, function() {
        var loggedUserId = _.get(req, 'user.id');
        ...
        //your rest code here
    });
});
于 2016-02-24T12:43:18.947 に答える