我有一个反应应用程序,从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无状态时,您只需要令牌身份验证。
答案 0 :(得分:0)
当您使用Laravel 5.4时,您可以使用Passport,但我还没有实现,但我为我的一个laravel项目实现了lucadegasperi/oauth2-server-laravel
,它是在Laravel 5.1中开发的
这是github存储库的链接 lucadegasperi/oauth2-server-laravel
的链接只需将包添加到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