我刚刚开始学习 Symfony 2 教程。我创建了一个包含用户类的捆绑包,并尝试按照说明设置登录过程。我想我快到了,但是我目前正处于最后一个障碍。
我设置了一个包:Dan\AuthBundle,其中包含我的用户类和另一个包:Dan\HelloBundle,我希望只允许登录用户访问。
我的 security.yml 文件如下:
security:
encoders:
Dan\AuthBundle\Entity\User: sha512
providers:
main:
entity: { class: Dan\AuthBundle\Entity\User, property: username }
administrators:
entity: { class: DanAuthBundle:User }
firewalls:
secured_area:
pattern: ^/*
form_login:
check_path: /login_check
login_path: /login
always_use_default_target_path: false
default_target_path: /hello
access_control:
- { path: ^/hello/.* }
主 routing.yml 文件如下所示:
DanAuthBundle:
resource: "@DanAuthBundle/Resources/config/routing.yml"
prefix: /auth/
DanHelloBundle_homepage:
pattern: /hello/
defaults: { _controller: DanHelloBundle:Default:index }
login:
pattern: /login
defaults: {_controller: DanAuthBundle:Default:login }
login_check:
pattern: /login_check
我手动创建了我的用户类的几个实例。
如果我尝试访问 url /hello,我会正确地重定向到登录页面。如果我输入了错误的详细信息,我会在模板中收到正确的消息,但是,当我使用正确的详细信息登录时,我会收到 324(空响应)错误(此时,浏览器中显示的 url是登录检查)。
通过阅读文档,我认为我应该被重定向到我最初尝试访问的页面?
http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form
默认情况下,如果提交的凭据正确,用户将被重定向到请求的原始页面(例如 /admin/foo)。如果用户最初直接进入登录页面,他将被重定向到主页。这可以高度自定义,例如,允许您将用户重定向到特定 URL。
此外,如果我在输入正确的详细信息后尝试访问该页面,我将再次被重定向到登录页面。
谁能看到我是否遗漏了任何明显的东西?
这是来自我的日志文件:
[2012-06-18 18:33:47] 教义.调试:从用户 t0 选择 t0.id 作为 id1,t0.username 作为用户名 2,t0.salt 作为 salt3,t0.hashed_password 作为 hashed_password4 从用户 t0 WHERE t0.username = ?(["hello"]) [] [] [2012-06-18 18:33:47] security.INFO: 用户 "hello" 已通过身份验证成功 [] [] [2012-06-18 18:33:47 ] event.DEBUG:监听器“Symfony\Component\Security\Http\Firewall::onKernelRequest”停止了事件“kernel.request”的传播。[] [] [2012-06-18 18:33:47] event.DEBUG:没有为事件“kernel.request”调用监听器“Symfony\Bundle\FrameworkBundle\EventListener\RouterListener”。[] [] [2012-06-18 18:33:47] event.DEBUG:没有为事件“kernel.request”调用监听器“Symfony\Bundle\AsseticBundle\EventListener\RequestListener”。[] [] [2012-06-18 18:33:47] event.DEBUG:通知事件“kernel.response”到监听器“Symfony\Component\Security\Http\Firewall\ContextListener::onKernelResponse”。[] [] [2012-06-18 18:33:47] security.DEBUG: 在会话中写入 SecurityContext [] []
任何建议表示赞赏。
谢谢。