我正在使用php-openstack-sdk的令牌身份验证来调用云API。
$openstack = new OpenStackOpenStack([
'authUrl' => '{authUrl}',
'region' => '{region}',
'user' => [
'id' => '{userId}',
'password' => '{password}'
],
'scope' => ['project' => ['id' => '{projectId}']]
]);
但是,每个 API 调用都需要我进行身份验证(如上面的代码所示(。与其在每个控制器函数中重复相同的身份验证代码,不如执行一次并能够在控制器函数中调用$openstack
?即,在我的控制器中,我可以直接使用$openstack。
public function listServers()
{
$openstack->computeV2()->listServers();
}
如果您希望
所有控制器都可以访问逻辑,请在Controller.php
的__construct()
中编写逻辑。如果没有,请在所需的控制器中写入__construct()
。
控制器.php
class Controller extends BaseController
{
protected $openstack;
public function __construct()
{
$this->openstack = new OpenStackOpenStack([
...
]);
}
}
网络控制器.php
class NetworkController extends Controller
{
public function getNetworkDetails() {
$network = $this->openstack->networking();
}
}
您可以将控制器的 __construct
函数中显示的代码放在控制器中,并将其作为受保护的变量提供给类。
我认为最好的方法是使用laravel中间件