expressJwt:访问不需要登录的页面上的req.user

时间:2014-12-13 21:41:05

标签: angularjs node.js express-jwt json-web-token

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

问题是你只能在以/ api开头的任何路径上从req.user访问JWT(json web令牌)(这需要登录)...并且因为这个页面不需要登录,所以它不会#39;属于/ api。

我是否可以通过某种方式在不在/ api下的路径上访问req.user?另一个想法是在请求数据和使用不同的路径之前检查他们是否已登录...

即:

未登录始终使用: / username / somedata(总是只公开数据)

已登录: / api / username / somedata(在输出之前检查用户是否是数据的作者,如果作者输出公共和私有...否则只公开)

更新:我测试了多条路径并且它运行良好,但我仍然很好奇,如果你能以另一种方式访问​​req.user,那么我现在还不会回答我自己的问题。

1 个答案:

答案 0 :(得分:0)

不确定它是否是最佳选择,但我使用以下内容:

class IsDirectoryToUriConverter : IValueConverter
    {
        public Uri ImageDirectoryUri { get; set; }

        public Dictionary<string,Uri> ImageExtensionTable { get; } = new Dictionary<string,Uri>();



        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {

            var item = (ArcSharedTreeViewItem)value;
            var data = item.ArcShared;
            if (data.IsDirectory)
            {
                return ImageDirectoryUri; 
            }
            else
            {
                var extension = data.Extension;
                if (ImageExtensionTable.ContainsKey(extension)) return ImageExtensionTable[extension];

                else return ImageExtensionTable["file"];
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }