问题1
如何将login_check路由更改为其他命名路由?
例如,登录表单会发布到www.example.com/auth而不是www.example.com/login_check。然后auth将像login_check一样执行检查。
问题2
如果用户在已经过身份验证时尝试访问/登录,如何重定向用户?
例如,当用户尝试访问/登录时,如果他/她已经过身份验证,则会被重定向到/ account而不是显示登录表单。
非常感谢。
答案 0 :(得分:1)
如果要在src/Pk/AppBundle/Resources/config/routing.yml
内加载捆绑的路由,可以为路径创建一个条目:
# src/Pk/AppBundle/Resources/config/routing.yml
homepage:
pattern: /
defaults: { _controller: AppBundle:Home:index }
login:
pattern: /login
defaults: { _controller: AppBundle:Auth:login}
login_check:
pattern: /auth
logout:
pattern: /logout
account:
pattern: /account
defaults: { _controller: AppBundle:Account:index}
和您的security.yml
:
# app/config/security.yml
firewalls:
main:
pattern: ^/
form_login:
check_path: login_check # the name of your check route
login_path: login # the name of your login route
default_target_path: account # the name of your account route
always_use_default_target_path: true
logout:
path: logout
target: /
anonymous: ~
remember_me:
key: "%secret%"
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~ # Defaults to the current domain from $_SERVER
这应该可以使用Symfony 2.6 (Documentation)
但是它会在登录后全部重定向,如果您想要的只是当客户端GET / login然后您可以使用控制器:
# AppBundle:Auth
public function loginAction ()
{
if($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')){
return $this->redirect($this->generateUrl('account'));
}
// logic of the loginpage
}
如果您想要更多自定义,可以为其添加登录事件侦听器。 (For example)
如果我没有错过任何它应该有效。
如果我弄错了,请告诉我,我希望这会对你有所帮助。