3

我一直在使用 Symfony 2.1 开发自定义身份验证系统。经过与 Symfony 的大量战斗后,我得到了一些可以工作但不完全的东西......

问题:登录后(通过表单),用户已登录但未通过身份验证。

上下文:由于用户必须通过 HTML 表单提交他们的凭据,我必须创建一个扩展的侦听器AbstractAuthenticationListener

问题:侦听器不应该自动将令牌添加到SecurityContext?如果不是这种情况,我应该手动执行吗?

过程

用户通过 HTML 表单提交他的凭据

侦听器拦截请求并运行尝试身份验证

Listener 调用 AuthenticationManager 的(实现 AuthenticationProviderInterface)认证方法

AuthenticationManager 调用 UserProvider(实现 UserProviderInterface)从我的 web 服务中检索用户数据。

UserProvider 返回一个实现 UserInterface的User类

AuthenticationManager 创建一个实现 TokenInterface的Token 。

AuthenticationManager 将令牌返回给侦听器。

侦听器的尝试身份验证从 AuthenticationManager 的方法返回令牌:身份验证

用户已登录但未通过身份验证。

我没有显示代码示例以避免帖子超载。如果需要,我会编辑帖子。

4

1 回答 1

2

我发现我的错误...

登录后,AuthenticationSuccessHandler将用户重定向到我想要的 url。此操作从 UserProvider 触发 refreshUser。

这个函数是用一个不同于我登录的用户的测试用户硬编码的。一旦该函数返回一个与存储在令牌中的用户相同的用户,问题就解决了。

于 2013-03-27T13:39:55.627 回答