如何使用phly-expressive-oauth2clientauthentication模块进行zend-expressive

时间:2018-02-01 16:52:10

标签: php oauth-2.0 zend-expressive

HY,

我想在我的表达应用中使用这个模块(https://github.com/phly/phly-expressive-oauth2clientauthentication)。

我阅读了此文档https://phly.github.io/phly-expressive-oauth2clientauthentication

这就是我所做的:

在我的config / autoload文件夹中,我用这个数组添加了一个oauth2clientauthentication.global.php:

'oauth2clientauthentication' => [
    'routes' => [
        'production' => '/(:provider)(/oauth2callback)',
    ],
],

在我的pipeline.php文件中添加

use Phly\Expressive\OAuth2ClientAuthentication\OAuth2CallbackMiddleware;

$app->pipe('/auth', OAuth2CallbackMiddleware::class);

在我的ConfigProvider.php文件中,我添加了一个带有此配置的路由(我使用带有https://github.com/acelaya/expressive-slim-router的slim路由器:

[
    'name' => 'admin',
    'path' => '/admin',
    'allowed_methods' => ['GET'],
    'middleware' => [
        SessionMiddleware::class,
        AuthenticationMiddleware::class,
        Action\AdminAction::class,
    ],

当我尝试使用此网址时:' http://blog/admin',我使用github按钮获取未经身份验证的页面。但是当我点击按钮时,网址是:' http://blog/auth/github?redirect=http://blog/admin'并得到一个错误:

Unable to resolve service "Zend\Expressive\Delegate\NotFoundDelegate"

我不明白问题在哪里,有人有想法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您似乎升级了Expressive安装而未通过migration guide

检查config/autoload/dependencies.global.php。它应该包含这样的内容:

use Zend\Expressive\Container\NotFoundDelegateFactory;
use Zend\Expressive\Delegate\NotFoundDelegate;

return [
    'dependencies' => [
        'aliases' => [
            'Zend\Expressive\Delegate\DefaultDelegate' => NotFoundDelegate::class,
        ],

        'factories' => [
            NotFoundDelegate::class => NotFoundDelegateFactory::class,
        ],
    ],
];