0

我正在使用 expressJwt ( https://github.com/auth0/express-jwt ) 对 angularjs 网站进行用户验证。我有一个有趣的情况,我有一个 URL(/username/somedata),任何人都可以访问这个页面。如果他们没有登录,或者不是这个用户,他们只会得到标记为公开的数据。如果他们已登录并且是正确的用户,他们将获得公共和私人数据。

问题是您只能在以 /api (需要登录)开头的任何路径上从 req.user 访问 JWT(json Web 令牌)......并且由于此页面不需要登录,因此它不会下降在 /api 下。

有什么方法可以允许访问不在 /api 下的路径上的 req.user 吗?另一个想法是在请求数据并使用不同的路径之前检查他们是否已登录......

IE:

未登录始终使用:/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 回答