【发布时间】:2017-09-11 12:23:18
【问题描述】:
如何将当前语言环境添加到 /user/login 或 /user/logout 等路径?控制器确实支持“{_locale}”占位符,但在安全模式中它会被报告为错误。
$app['security.firewalls'] = array(
'login' => array(
'pattern' => '^/user/login$',
),
'secured_area' => array(
'pattern' => '^.*$',
'anonymous' => false,
'remember_me' => array(),
'form' => array(
'login_path' => '/user/login',
'check_path' => '/user/login_check',
),
'logout' => array(
'logout_path' => '/user/logout',
'invalidate_session' => true,
),
),
);
【问题讨论】:
-
可能你需要像这样修复你的路线symfony.com/doc/current/translation/…
-
安全组件不适用于 _locale 占位符。但它可以与命名路由一起使用,check this out
-
@mTorres:我在此链接中没有看到任何“命名路线”解决方案。只有一个会话解决方法,有人提到命名路由,但他没有解释命名路由如何解决安全模式问题。
-
@sakhunzai:多亏了神奇的 {_locale} 占位符,这些路线已经开始工作了。问题在于安全组件和本地化登录路径的重定向。
-
据我了解,您必须自己注册 login_path、check_path 和 logout_path 而不是relaying on the SecurityServiceProvider。你必须name these routes(比如
$app->match('/{_locale}/user/login', ...)->bind('login'),然后在你的安全配置中使用路由名称而不是路由路径(login_path=> 'login')。我自己没有尝试过,所以我只是指向一个可能的解决方案...