Laravel 5.4:如何保护api路线

时间:2017-05-13 09:57:05

标签: laravel

我有一个反应应用程序,从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无状态时,您只需要令牌身份验证。

2 个答案:

答案 0 :(得分:0)

当您使用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安装部分所述,

为了在csrf数组中完美切割$middleware并将其粘贴到$routeMiddleware数组并在发布迁移后再次运行php artisan vendor:publish,您必须进行一些小调整将创建并运行迁移php artisan migrate

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

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

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

答案 1 :(得分:0)

你可以使用JWT它很容易让它运作起来。您基本上通过请求用户名/密码并在每个需要身份验证的请求中传递该令牌来生成令牌,您的URL看起来像http://example.com/api/items?token=SOME-TOKEN。如果没有适当的令牌,他就无法访问此端点。

至于

  

如何让这些路线只能在应用内访问?

如果您的意思是只有您的应用可以使用这些请求,则不能。基本上,API不知道谁发送这些请求,他只能检查你提供的是否正确,如果一切正常,则继续进行。我建议你看一下this question