【发布时间】:2015-12-14 22:25:09
【问题描述】:
我正在使用 Laravel 和 Angular 构建一个应用程序。我已经定义了以下路线
Route::group(array('prefix' => 'api'), function() {
Route::resource('getdealsbymerchant/{merchant_id}', 'dealsController@getdealsbymerchant',
array('only' => array('index')));
});
我有这条路线工作。当我点击它时,我会收到 JSON 响应。
我还能够在 Angular 中调用 API 来读取数据并显示它。
在我的 app.js 中我已经定义了
var app = angular.module('deals', [])
.constant('API_URL', 'http://www.coupon.local/api/getdealsbymerchant/');
我知道我可以通过添加来保护路线
'middleware' => 'auth',
到路线。
我的问题是如何验证我的 Angular 应用程序以确保只有 Angular 应用程序可以访问 API 而不是其他人。
我是在 app.js 中传递用户名和密码还是有更好的方法?另外由于 app.js 在 public 文件夹中,不是每个人都能看到我传递的用户名密码吗?
请帮忙。 谢谢。
【问题讨论】:
-
我的问题是如何验证我的 Angular 应用程序以确保只有 Angular 应用程序可以访问 API 而不是其他所有人。 - 使用一些令牌?域锁?顺便说一句,甚至有几个 api 提供者使用 key 来验证他们的客户端,但客户端实际上公开了 api 密钥,就像 google api 浏览器密钥、twitter api 密钥等一样。
-
这是否意味着如果我的 API 允许更新/删除,任何用户都可以看到我的密钥并使用它来访问 API 和更新/删除记录?抱歉,我无法理解此身份验证,所以问。
-
实际上,您可以代替验证您的应用程序 - 您可以按用户执行此操作。就像scotch.io token based authentication for angular js and laravel app 中解释的那样,您可以改为对用户进行身份验证 - 它更安全,我们只需要一个 session 密钥 - 在用户登录时生成并在以后丢弃(通过不活动或注销)。 ps 是的,这意味着如果我的 API 允许更新/删除,如果您使用应用程序密钥,任何用户都可以看到我的密钥并使用它来访问 API。
-
我使用这个提示:登录时,我使用 https 将用户名(纯文本)和密码(sha-256)发送到服务器。服务器返回一个 API 密钥(存储在帐户数据中,例如当前时间毫秒和 sha-256,为每次密码更改生成),我使用一些 Angular 本地存储来存储基本身份验证信息(基本
= )。然后,我使用全局资源配置为每个调用发送这个。
标签: angularjs laravel-5.1