Security Symfony-2>;登录&;带有占位符的注销路由
我正在使用Symfony-2实现我的应用程序。Security Symfony-2>;登录&;带有占位符的注销路由,security,symfony,routing,placeholder,Security,Symfony,Routing,Placeholder,我正在使用Symfony-2实现我的应用程序。 我需要我的登录和注销路由具有一些占位符,但我无法在routing.yml和security.yml文件中很好地定义它 我想要像这样的东西: www.mysite.com/{client_slug}/panel 在它下面还有其他安全页面: www.mysite.com/{client\u slug}/panel/* 当有人试图导航到其中一个页面时,他/她应重定向到: www.mysite.com/{client_slug}/login 单击“注销”后
我需要我的登录和注销路由具有一些占位符,但我无法在routing.yml和security.yml文件中很好地定义它
我想要像这样的东西:
www.mysite.com/{client_slug}/panel
在它下面还有其他安全页面:www.mysite.com/{client\u slug}/panel/*
当有人试图导航到其中一个页面时,他/她应重定向到:
www.mysite.com/{client_slug}/login
单击“注销”后,用户应该被重定向到如下位置:
www.mysite.com/{client_slug}/再见
我尝试了几件事(但目前唯一的收获是在我的登录url中出现了文本{client_slug}:
www.mysite.com/my cliend slug/panel
重定向到
www.mysite.com/{client_slug}/login
security.yml
firewalls:
main:
pattern: /.*
form_login:
check_path: /login_check
login_path: _security_login
logout:
path: /logout
target: /goodbye
security: true
anonymous: true
_security_login:
pattern: /{_client_slug}/login
defaults: { _controller: MyAppBackendBundle:Security:login }
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
_admin_panel:
pattern: /{_client_slug}/panel
defaults: { _controller: MyAppBackendBundle:AdminPanel:index }
routing.yml
firewalls:
main:
pattern: /.*
form_login:
check_path: /login_check
login_path: _security_login
logout:
path: /logout
target: /goodbye
security: true
anonymous: true
_security_login:
pattern: /{_client_slug}/login
defaults: { _controller: MyAppBackendBundle:Security:login }
_security_check:
pattern: /login_check
_security_logout:
pattern: /logout
_admin_panel:
pattern: /{_client_slug}/panel
defaults: { _controller: MyAppBackendBundle:AdminPanel:index }
有什么想法吗?我遇到了完全相同的问题。我已经阅读了这里的所有内容(),对我来说,它只包含了几行额外的内容 这是我的保安
login_area:
pattern: ^/[A-Za-z0-9\-\_]+/login$
anonymous: ~
secured_area:
pattern: ^/[A-Za-z0-9\-\_]+/.*
form_login:
login_path: login
check_path: login_check
logout:
path: logout
target: /
remember_me:
key: "%secret%"
lifetime: 31536000
path: /
domain: ~
登录和登录路径定义:
login:
pattern: /{_client}/login
defaults: { _controller: GNCApplicationBaseBundle:Security:login }
login_check:
pattern: /{_client}/login_check
我制作了一个EventListener,它将在kernel.request事件中调用:
acme.system.client.listener:
class: Acme\System\ClientBundle\EventListener\ClientListener
arguments: [@router, @doctrine.orm.entity_manager]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 10 }
重要的属性是优先级。在Symfony文档()中,它显示RouterListener的优先级为32,防火墙的优先级为8。因此,我选择在防火墙之前调用我的自定义EventListener,并在路由器上下文中手动设置_client-attribute:
public function onKernelRequest(GetResponseEvent $event) {
$clientIdentifier = $event->getRequest()->attributes->get('_client');
$this->router->getContext()->setParameter('_client', $clientIdentifier);
}
而且对我来说效果很好
我目前正在使用Symfony 2.2.0-RC3。请发布routing.yml和security.yml文件的相关部分,这样我们可以确保您的访问控制和防火墙设置正确。只需在原始问题中添加相关部分。
\u client\u slug
应该包含什么?它是一个带有客户端名称slug的字符串。appli阳离子对每个客户端都有面板,url应该包含其slug。例如,如果客户端名为“Manolo and sons”,slug将只是manolo和sons。它将在整个课程中提供服务,以验证不同模块的访问权限。Manixx;你的英语一点也不差!你的写作比许多母语人士都好。我删除你的道歉,因为这真的是完全没有必要的。