这个问题的原因来自合作者的要求:我想知道我是否可以删除提供者。是强制性的?如果我可以将其方法留空,我想删除它。
因此,在Symfony 提供商配置强制。此外,我需要配置至少一个提供商。完成!我的定制服务是:
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);
手动设置会话,并对用户进行身份验证。我可以注销用户使会话无效。
我确信至少,这个提供者需要刷新用户返回一个UserInterface:
public function refreshUser(UserInterface $user)
{
return $user;
}
因为如果没有此返回,登录将无效。但我可以将其他方法留空。
我查看了内部测试和UserProviderInterface
方法的评论。但没什么。如果可以,我没有得到:
并且,....即使我的防火墙不使用此提供商,当我评论此行时,为什么登录不起作用?
public function refreshUser(UserInterface $user)
{
// return $user;
}
-
我已经创建了这个CustomListener
,因为我已经定义了
作为提供者的服务。然后我收到了这条消息:
传递给Symfony \ Component \ Security \ Core \ Authentication \ Provider \ DaoAuthenticationProvider :: __ construct()的参数1必须是Symfony \ Component \ Security \ Core \ User \ UserProviderInterface的实例,
答案 0 :(得分:1)
用户提供商告诉Symfony从哪里加载用户,因此您需要加载用户,但除非您拥有复杂的身份验证系统,否则您不需要创建自己的用户。
如果您从数据库加载用户,则可以使用默认的数据库提供程序http://symfony.com/doc/current/cookbook/security/entity_provider.html