我有一个 React 应用程序,它从 laravel api 中获取数据,定义如下:routes/api.php:
// this is default route provided by laravel out of the box
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
// ItemController provides an index methods that list items with json
Route::resource('items', 'Api\ItemController', array('except' => array('create','edit')));
// this is to store new users
Route::resource('users', 'Api\UserController', array('only' => array('store')));
例如http://example.com/api/items http://example.com/api/items按预期返回数据,但它确实不安全,因为任何人都可以通过邮递员访问它。
如何使这些路线只能在应用程序内部访问?
由于我是新手,我不明白是否需要设置 api_token 以及如何设置?
我需要设置 Passport 吗?
与 auth:api 中间件有关吗?
这听起来可能非常基本,但任何帮助或教程建议将不胜感激
EDIT
最终获得经典的会话身份验证。在 web.php 中移动了路由。在ajax请求中传递csrf令牌。实际上我不需要 RESTful API。当您的 API 无状态时,您只需要令牌身份验证。
当你使用 Laravel 5.4 时,你可以使用 Passport,但我还没有实现,但我实现了lucadegasperi/oauth2-server-laravel
我的 Laravel 项目之一,它是在 Laravel 5.1 中开发的
这是 github 存储库的链接lucadegasperi/oauth2-server-laravel https://github.com/lucadegasperi/oauth2-server-laravel
这是文档的链接广泛的文档 https://github.com/lucadegasperi/oauth2-server-laravel/tree/master/docs#readme
只需将包添加到composer json并运行composer update,该包就会安装到您的应用程序中,安装后添加providers数组类和别名数组类,如文档的Laravel 5安装部分中所述,
你必须做一些小调整才能完美切割csrf
from $middleware
数组并将其粘贴到$routeMiddleware
数组并再次运行php artisan vendor:publish
发布后,将创建迁移并运行迁移php artisan migrate
如果您只想保护每个客户端(如 ios、android 和 web)的 api 路由,您可以实施客户端凭据授予,或者如果您需要每个用户使用 oauth,您可以使用密码授予或其他方式实现授权服务器。
切勿使用客户端 ID 或其他凭据,在表单中生成访问令牌,而是将其添加到 helper 中的某个位置并将其附加到 api 的请求中,
希望这个答案对您有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)