【发布时间】:2015-05-06 03:41:20
【问题描述】:
我使用 Angulars $http 服务在后端调用数据。比方说 JSON 数据。这样做的示例 URL 类似于:
/get/data
在 Angular 中执行此操作可以很好地返回请求的数据。没问题。
但即使我使用带有$urlRouterProvider.otherwise('/'); 的 Angular UI 路由器捕获 所有其他 Angular 路由,我仍然可以转到我的浏览器并输入 mydomain.com/get/data URL,它为我提供了一个页面JSON 代码。
如何限制后端服务器调用仅来自 Angular,而不是来自未经用户身份验证的浏览器 URL?
注意 在 Node 上使用 Express 4.X,我还为我的应用程序提供了一条“包罗万象”的路由,以默认返回到我的前端 index.html 页面,如下所示:
router.get('*', function(req, res) {
res.sendFile(path.join(__dirname, '/index.html'));
});
谢谢!
【问题讨论】:
-
你应该看看 PassportJS。这会让你开始。
-
我对护照很熟悉,但由于没有身份验证级别,我想知道是否可以修复它,而不是为应用程序添加一个全新的安全层。
-
身份验证正是您所需要的——恐怕不能逃避它
-
感谢您的付出,那我试试认证!
-
在没有身份验证的情况下,您最接近的方法是让您的 Angular 应用程序发送一个自定义标头,并在后端要求该标头。但是,任何试图获取原始数据的人当然都可以对其进行欺骗。此外,原始数据可在网络选项卡中轻松获得。
标签: angularjs node.js rest angular-ui-router