如何编辑来自超链接(<a href>标签)的HTTP GET请求的授权标头。

5
我有一个Angular应用程序,将JWT令牌存储在本地存储中以提供身份验证。我的目标是找出如何获取此JWT令牌并将其插入到HTTP GET请求中,以呈现为全新的网页(不是从XMLHTTP请求返回的对象,在同一页面中显示...)。
这个可能吗?我发现实现类似功能的唯一方法是使用基本的HTTP授权,例如: username:password@www.hypotheticalwebsite.com
我假设我可以在那里传递整个JWT。
我正在使用Express.js在我的Node.js后端处理路由。
1个回答

3

只需从本地存储中读取JWT,然后将其插入到授权标头中,或者可以将其作为GET参数添加。

我建议使用标头。

在下一个页面上简单地读出JWT。

如果需要处理express实例的所有页面,则在express-middleware中执行。

更新

如果要使用普通链接,必须使用像?auth_token=12345这样的参数。

要将其添加为标头,您可以在控制器中使用$http并使用一种方法。 例如:

控制器

$scope.openLink = function() {
    var config = {
        headers:  {
            'Authorization': '12345',
        }
    };

    $http.get("<your url>", config);
}

查看

<a href="#" ng-click="openLink()">Test</a>

屏蔽管理员界面

为了安全起见,您应该在API中添加角色,并仅允许管理员进行管理相关的调用,并在Angular端检查用户是否有权以其所拥有的角色打开UI。 对于Angular,有一些ACL模块可供选择,例如:github.com/mikemclin/angular-acl


这正是我想要做的。我该如何将令牌插入到标头中? - Leif
那个命令是标准的 $http 模块,它打开了一个 XMLHTTP 请求并返回一个对象,对吧?我想要一个普通的链接到一个全新的页面。如果可能的话,我想避免将它作为 "?" 参数放在 URL 中。 - Leif
您无法使用常规链接设置标头字段。 - blacksheep_2011
明白了。我最终想要实现的是确保我的 Web 界面中的“管理员”部分完全与我的 Angular 应用程序隔离开来。你能给我提供一个链接或者解释一下如何做到最佳实践吗? - Leif
为了保证安全性,您应该在API中添加角色,并仅允许管理员进行相关调用。同时,在Angular端检查用户是否有权使用其角色打开UI界面。对于Angular,有一些ACL模块可供选择,例如:https://github.com/mikemclin/angular-acl。 - blacksheep_2011
我认为这可能是我最终要做的事情,但我试图避免在客户端源代码中公开管理员API URI以获得最大安全性,这样非管理员用户就无法访问。我是不是太过多虑了? - Leif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接