如何在第三方应用程序中使用会话Symfony2执行授权

时间:2013-11-14 12:27:36

标签: session symfony

我遇到以下情况的问题:
在我的Symfony2应用程序中,登录的用户打开3 rd 方应用程序(TinyMCE的filenamager)。如何使用SF2应用程序的凭据授权用户?

如果用户在登录页面上检查remember_me,则可以执行以下操作:

//Bootstrap of 3rd party app
require_once('../../../app/bootstrap.php.cache');
require_once('../../../app/AppKernel.php');

$kernel = new AppKernel('prod', false);
$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
$container = $kernel->getContainer();
if(false == $container->get('security.context')->isGranted('ROLE_USER'))
{
  $response = new \Symfony\Component\HttpFoundation\RedirectResponse('http://'.$request->getHost());
  return $response->send();
}

但如果未使用remember_me登录,则会导致重定向到登录页面。

2 个答案:

答案 0 :(得分:1)

在security.yml上,您可以设置默认情况下记住我是YES。 这是参考,我不想复制整个配置文件。

Symfony reference

答案 1 :(得分:1)

我的建议是将tinyMCE(您网站上的任何第三方应用)放在防火墙后面。

#security.yml
firewalls:
    tiny_mce:
        pattern: ^/path/to/your/tinymce/dir
        http_basic: # Any authentication provider here
            realm: "Secured Demo Area"

当用户打开tinymce时,浏览器会请求http://example.com/path/to/your/tinymce/dir/tinymcefile.html。并且symfony将要求用户进行身份验证,因为您已在security.yml中提及此路径

更新

当您在开发环境中登录然后尝试从prod env或反向访问路径时,可能会出现此问题!我看到,对于微小的mce,你使用dev env。检查您之前登录的内容。