Zend 3 onBootstrap获得适配器

时间:2017-10-23 01:58:09

标签: php zend-framework3

几个月前我开始使用zend 3进行一个项目,现在我被卡住了。 我有一个自定义的身份验证(不使用zend身份验证模块)工作正常,但每次访问重定向页面时都需要验证。

因为在每个页面的网址上都有一个用于签入数据库的令牌,我试图在函数onBootStrap()内部进行操作。

我学会了使用工厂,模型,地图制作者以及我目前在某些控制器中使用它们,但我无法找到实现的方法,至少我是否可以获得dbAdapter从bootstrap事件中使用,就足够了。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以为此作业使用延迟事件。这是一个简单的例子。

public function onBootstrap(EventInterface $e)
{
   /** @var \Interop\Container\ContainerInterface $container */
   $container = $e->getApplication()->getserviceManager();

   $events = $e->getApplication()->getEventManager();

   $events->attach(MvcEvent::EVENT_ROUTE, new LazyListener([
      'listener' => Listener::class,
      'method'   => 'onRoute'
   ], $container));
}

所以你可以在Listener类上检查你的身份验证' " onRoute"方法。如果MvcEvent :: ROUTE事件对您来说太早,您也可以使用其他MvcEvent。

希望这可以解决您的问题。

答案 1 :(得分:0)

获取适配器并在tablegateway中使用

location ~ ^/vp/(.*?)$ {
    if ($request_method = POST ) {
      rewrite /vp(.*?)$ /$1;
    }

    if ($request_method != POST) {
      return 301 /$1;
    }
}

location ~ ^/(.*?)$ {
  proxy_pass  http://127.0.0.1:8080/vp/$1;
  proxy_set_header Host $host;
  proxy_redirect $scheme://$host/vp/ $scheme://$host/;
}