Laravel 5.4:如何保护api路线

我有一个反应应用程序,从routes / api.php中定义的laravel api获取数据:

// 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按预期返回数据,但它真的不安全,因为任何人都可以通过邮递员访问它.

如何使这些路线只能在应用程序内访问?

由于我是新手,我不明白我是否需要设置api_token以及如何设置?

我需要设置Passport吗?

与auth:api中间件有关吗?

这可能听起来很基本,但任何帮助或教程建议将不胜感激

编辑

最终获得经典的会话认证.在web.php中移动了路由.在ajax请求中传递csrf令牌.实际上我不需要RESTful API.当您的API无状态时,您只需要令牌身份验证.

最佳答案
当您使用Laravel 5.4时,您可以使用Passport,但我尚未实现,但我为我的一个laravel项目实现了lucadegasperi / oauth2-server-laravel,它是在Laravel 5.1中开发的

这是github存储库的链接
lucadegasperi/oauth2-server-laravel

这是文档Exrensive Documentation的链接

只需将包添加到composer json并运行composer update,该软件包将安装到您的应用程序,安装后添加providers数组类和别名数组类,如文档的Laravel 5安装部分所述,

你必须做一个小调整才能完美地从$middleware数组切割csrf并将其粘贴到$routeMiddleware数组中并再次运行php artisan供应商:发布后将发布迁移将创建并运行迁移php artisan migrate

如果您只想为每个客户端(如ios,android和Web)保护api路由,您可以实现客户端凭据授予,或者如果您需要每个具有oauth的用户,您可以使用密码授权或其他方式实现授权服务器.

永远不要使用客户端ID或其他凭据,在表单中生成访问令牌,但将其添加到帮助器中的某个位置并将其附加到api的请求中,

希望这个答案可以帮到你.

转载注明原文:Laravel 5.4:如何保护api路线 - 代码日志