这一问题的原因是从合作者的要求,诞生了:我想知道我是否可以删除提供商。是强制性的?如果我可以将其方法留空,我想删除它。Symfony2可以在没有UserProvider的情况下工作吗?
所以,在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);
手动设置会话,并且用户已通过身份验证。我可以注销用户失效会话。
我相信,至少,这个供应商需要的是refreshUser返回的UserInterface:
public function refreshUser(UserInterface $user)
{
return $user;
}
因为登录不没有这个回报的工作。但是我可以将其他方法留空。
我看着里面测试,并在UserProviderInterface
方法的意见。但没有。我没有得到,如果我可以:
- remove provider;
- 我错过了文档中的东西;
- 我试图用严重的Symfony(可能);
- 我是一个茶壶;
- ... -
而且,....为什么登录不,当我注释此行,即使我的防火墙不使用该供应商合作?
public function refreshUser(UserInterface $user)
{
// return $user;
}
-
我创造了这个CustomListener
只是因为我已经定义 服务为供应商。然后我收到以下消息:
传递给Symfony \ Component \ Security \ Core \ Authentication \ Provider \ DaoAuthenticationProvider :: __ construct()的参数1必须是Symfony \ Component \ Security \ Core \ User \ UserProviderInterface的一个实例,
我不是一个数据库。我只是一个用于用户身份验证的API,并且还提供数据。我没有使用教义。 – sensorario
如果您使用的是API,那么您的身份验证如何与空的用户提供者协同工作? Symfony如何知道如何加载用户? –
在控制器内部,我使用HTTP客户端来询问API是否良好,如果它返回给我一些特定的值,我这样做:'$ request-> getSession() - > set('_ security_secured_area',$ this-> token-> createFromRequest($ request));' – sensorario