在每个控制器请求之前执行函数



我正在使用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中间件

相关内容

  • 没有找到相关文章

最新更新