在我的工作中,我们正在将zend 1应用程序迁移到symfony 2。我试着想办法做到无害。我找到了下面的sf2包:https://github.com/mainlycode/Zf1WrapperBundle。我安装了它,按照配置说明,在/vendor/zend中复制了我的zend应用程序,一切都很正常。当我浏览我的旧登录路径时,sf2无法理解它并询问zend的响应,于是我的登录表单出现了。我可以登录,它工作,网站的授权部分显示正确。
现在我想开始修改一个需要对用户进行身份验证的功能。所以我创建了一个新的sf2包,叫做backendbundle。它在我的控制器中尝试过:

$securityContext = $this->container->get('security.context');
if( $securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED') ){
    echo 'AUTHED';
}

但我得到了以下错误:
The security context contains no authentication token. One possible reason may be that there is no firewall configured for this URL.

我完全明白为什么。但我真的不知道如何才能“分享”zend和sf2之间的认证。
有什么建议吗?

最佳答案

我的第一个猜测是共享会话(将zf和sf2配置为使用类似的sessionhandler),但是sf2以一种非常特定的方式存储会话信息,zf可能不容易支持这种方式。
但我想您可以尝试创建一个sf2 requestlistener,它将读取您的zf会话,在其中找到一个auth令牌,然后创建一个sf2 auth令牌,最后将其注入securitycontext。
你觉得怎么样?

07-26 03:56