重定向到登录页面并在Symfony 2.8中保留URL GET参数

时间:2017-05-24 16:11:07

标签: php symfony redirect url-parameters symfony-2.8

我正在创建一个通过以下电子邮件发送的网址:

    $url = $this->getContainerInterface()->get('router')->generate(
    'crmpiccobundle_view_subdomain_modify', [
       'subdomain' => $site->getSubdomain(),
       'subdomain_username' => $site->getSubdomain(),
    ], UrlGeneratorInterface::ABSOLUTE_URL),

该URL由我的控制器中的以下方法处理:

/**
 * @Route(
 *     "/view/{subdomain}/modify",
 *     name="crmpiccobundle_view_subdomain_modify"
 * )
 *
 * @Security("is_granted('IS_AUTHENTICATED_FULLY')")
 * @Template("CRMPiccoBundle:Admin/View/Modify:index.html.twig")
 *
 * @param Request $request
 * @param string  $subdomain
 *
 * @return array
 */
public function subdomainModifyViewAction(Request $request, string $subdomain)
{

因此,路由/view/{subdomain}/modify需要身份验证,如果用户未登录,则会将其踢到登录屏幕。我想要实现的是通过'子域名'或者' subdomain_username' (我知道这里有重复)到URL中的登录页面(例如/login?subdomain_username=crmpicco)或其他方式。

我不认为设置会话变量是合适的,因为脚本是由cron而不是浏览器中的用户运行的。

我可以从/view/crmpicco/modify?subdomain_username=crmpicco转到/login?subdomain_username=crmpicco吗?

security.yml

access_control:
    - {path: /, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - {path: /admin, roles: ROLE_USER}
    - {path: /admin/view, roles: ROLE_USER}

1 个答案:

答案 0 :(得分:0)

我最终实现此目的的方法是拉出目标网址,该网址会在成功登录后重定向到会话之外(_security.default.target_path),然后解析它以拉出URL参数({{ 1}})。

?username=crmpicco
相关问题