在每个控制器请求之前执行功能
Executing function before every controller request
我正在使用 php-openstack-sdk 的令牌身份验证调用云 APIs。
$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();
}
您可以将显示在控制器的 __construct
函数中的代码作为受保护的变量提供给 class。
我认为最好的方法是使用laravel middlewares
如果您希望所有控制器都可以访问该逻辑,请在 Controller.php
的 __construct()
中编写逻辑。如果没有,请在您需要的控制器中写入__construct()
。
Controller.php
class Controller extends BaseController
{
protected $openstack;
public function __construct()
{
$this->openstack = new OpenStack\OpenStack([
...
]);
}
}
网络Controller.php
class NetworkController extends Controller
{
public function getNetworkDetails() {
$network = $this->openstack->networking();
}
}
我正在使用 php-openstack-sdk 的令牌身份验证调用云 APIs。
$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();
}
您可以将显示在控制器的 __construct
函数中的代码作为受保护的变量提供给 class。
我认为最好的方法是使用laravel middlewares
如果您希望所有控制器都可以访问该逻辑,请在 Controller.php
的 __construct()
中编写逻辑。如果没有,请在您需要的控制器中写入__construct()
。
Controller.php
class Controller extends BaseController
{
protected $openstack;
public function __construct()
{
$this->openstack = new OpenStack\OpenStack([
...
]);
}
}
网络Controller.php
class NetworkController extends Controller
{
public function getNetworkDetails() {
$network = $this->openstack->networking();
}
}