【问题标题】:Dynamic Logout Target For SymfonySymfony 的动态注销目标
【发布时间】:2015-11-13 18:30:18
【问题描述】:


我已经使用 symfony 框架实现了一个基本的身份验证系统。它按预期工作。但我想再拥有一项功能。

logout 之后,我应该被重定向到以前的位置。我遵循以下问题来实现此功能。
Symfony2 Dynamic Logout Target?

但它给了我一条错误消息。

无法为命名路由“dynamic_route_name”生成 URL 这条路线不存在。

任何想法,为什么会这样?

【问题讨论】:

  • 你的路由有dynamic_route_name这个方法吗?
  • 你是否定义了一个匹配路由名称dynamic_route_name的控制器Action?
  • 没有。我没有任何这样的dynamic_route。其实我想在注销后重定向到上一页。

标签: php symfony authentication


【解决方案1】:

我假设您使用了示例帖子中的以下代码

return new RedirectResponse($this->container->get('router')->generate('dynamic_route_name'));

这期望路由 dynamic_route_name 存在,它不会真正将您带到上一页,而是到静态路由(如果您愿意,您可以在控制器中执行各种技巧)

相反,您可以尝试第二个答案并使用

$target_url = $request->query->get('target_url')
                  ? $request->query->get('target_url')
                  : "/";
    return new RedirectResponse($target_url);

target_url 是您要重定向到的路由(在模板中设置为当前路由)或任何其他可用于确定要转到哪个页面的逻辑

注销后重定向到当前页面,您可以设置注销链接如下:

<a href="{{ path('logout', {'target_url': app.request.uri})  }}">Logout</a>

【讨论】:

  • 其实我想在注销后重定向到上一页。那么,您是说重定向到静态路由,然后添加一些自定义逻辑?
  • 这取决于。如果您当前在 E.G /some/page 上,注销时您想返回到 /some/page 还是之前的 /some/page 页面?
  • 我要返回/some/page
  • 在这种情况下,您可以使用上面的代码,并使用 注销
  • 是 ajax 注销和页面刷新问题?
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 2013-09-18
  • 2016-01-09
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多