我正在通过php-openstack-sdk使用令牌认证来调用云API。
$openstack = new OpenStack\OpenStack([
'authUrl' => '{authUrl}',
'region' => '{region}',
'user' => [
'id' => '{userId}',
'password' => '{password}'
],
'scope' => ['project' => ['id' => '{projectId}']]
]);
但是,每个API调用都要求我经过身份验证(如上面的代码所示)。与其在每个控制器功能中重复相同的身份验证代码,不该如何执行一次并能够在控制器功能中调用$openstack
?也就是说,在我的控制器中,我可以直接使用$ openstack。
public function listServers()
{
$openstack->computeV2()->listServers();
}
答案 0 :(得分:1)
如果希望所有控制器均可访问,请在__construct()
的{{1}}中编写逻辑。如果没有,请在您需要的控制器中写入Controller.php
。
Controller.php
__construct()
NetworkController.php
class Controller extends BaseController
{
protected $openstack;
public function __construct()
{
$this->openstack = new OpenStack\OpenStack([
...
]);
}
}
答案 1 :(得分:0)
您可以放置控制器的__construct
函数中显示的代码,并将其作为受保护的变量提供给该类。
答案 2 :(得分:0)
我认为最好的方法是使用laravel middlewares