【发布时间】:2015-11-12 15:34:41
【问题描述】:
这个问题的原因是从一个合作者的请求中产生的:我想知道我是否可以删除提供者。是强制性的?如果我可以将其方法留空,我想将其删除。
因此,在 Symfony 中,providers 配置是强制。我还需要配置至少一个提供者。完毕!我的自定义提供者是这样的:
final class CustomListener implements UserProviderInterface
{
public function loadUserByUsername($username)
{
// ...
}
public function refreshUser(UserInterface $user)
{
return $user;
}
public function supportsClass($class)
{
// ...
}
}
我可以登录。登出。 ......但我有点困惑。为什么一个界面想要这些“无用”,目前loadUserByUSername和supportsClass?无用的意思是:我有空的实现,它可以工作!!!工作,意味着我使用$request->getSession()->set('firefall', $token); 手动设置会话并且用户已通过身份验证。我可以注销使会话无效的用户。
我敢肯定,这个提供者至少需要 refreshUser 返回一个 UserInterface:
public function refreshUser(UserInterface $user)
{
return $user;
}
因为没有这个返回就无法登录。但我可以将其他方法留空。
我查看了内部测试和 UserProviderInterface 方法的 cmets。但什么都没有。如果可以,我没有得到:
- 移除提供者;
- 我在文档中遗漏了一些内容;
- 我正在尝试错误地使用 Symfony(有可能);
- 我是一个茶壶;
- ... -
而且,....为什么即使我的防火墙不使用此提供程序,当我评论此行时登录也不起作用?
public function refreshUser(UserInterface $user)
{
// return $user;
}
--
我创建了这个CustomListener 只是因为我已经定义了
作为提供者的服务。然后我收到了这条消息:
传递给 Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider::__construct() 的参数 1 必须是 Symfony\Component\Security\Core\User\UserProviderInterface 的实例,
【问题讨论】: