Symfony3和登录重定向

用户名

用户尝试在成功登录后将打开urlhttp://example.com/page1?param=value默认身份验证重定向到该网址,http://example.com/login其重定向到http://example.com/page1?param=value网址是可以的。

问题是,我可以\在哪里(我应该重新定义什么,在哪里)重定向到http://example.com/login?param=value我需要登录表单的重定向手册(我的自定义类)(我想编辑url)。

用户名

讨厌symfony,无论如何找到解决方案:

namespace some\lib;

class AuthenticationListener
{
    /**
     * Change some data in response before it fires up.
     *
     * @param FilterResponseEvent $event
     */
    public function onResponse(FilterResponseEvent $event)
    {
        $response = $event->getResponse();

        if ($response instanceof RedirectResponse) {
            /** @var RedirectResponse $response */
            $parsedUrl = parse_url($response->getTargetUrl());

            if (!empty($parsedUrl['path'])) {
                $matchedRoute = $this->router->match($parsedUrl['path']);

                if (!empty($matchedRoute['_route']) && $matchedRoute['_route'] == 'login') {
                    $layout = $event->getRequest()->query->get('layout');

                    if ($layout) {
                        $response = $event->getResponse(); // response that should be fired up (redirect to url)

                        $responseUrl = $response->getTargetUrl();
                        $responseUrl .= is_int(strpos('?', $responseUrl)) // add layout to redirect url
                            ? '&layout=' . $layout
                            : '?layout=' . $layout;

                        $response->setTargetUrl($responseUrl);
                    }
                }
            }
        }
    }
// ... other code

添加到services.yml:

auth_listener:
    class: \some\lig\AuthenticationListener
    arguments: [] # inject yours
    tags:
        # some other definitions
        - { name: kernel.event_listener, event: kernel.response, method: onResponse }

只有这样(afaik),我们才能从prev添加参数。网址(目标)到下一个网址(重定向到登录)。

因此,我们RedirectResponse在内核级别进行了检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章