Php Symfony 2.8自定义身份验证
我需要使用第三方web服务进行自定义表单登录身份验证。问题是我无法实现Php Symfony 2.8自定义身份验证,php,symfony,authentication,Php,Symfony,Authentication,我需要使用第三方web服务进行自定义表单登录身份验证。问题是我无法实现UserProvider的方法loadUserByUsername($username)。另外,symfony在调用loadUserByUsername的每个页面加载上调用refreshUser(UserInterface$user)。。我的服务只有一个方法接受用户名和密码,如果它们有效,则返回success,否则返回false。我可以忽略UserProvider和与之相关的所有内容吗???任何建议。否您不能忽略用户提供程序,
UserProvider的方法loadUserByUsername($username)
。另外,symfony在调用loadUserByUsername
的每个页面加载上调用refreshUser(UserInterface$user)
。。我的服务只有一个方法接受用户名和密码,如果它们有效,则返回success,否则返回false。我可以忽略UserProvider和与之相关的所有内容吗???任何建议。否您不能忽略用户提供程序,但请查看guard组件。应该很容易实现您自己的验证器。为什么“不能”实现loadUserByUsername($username)
?如果需要,您可以使用缓存服务自由地实现它,以及刷新用户(UserInterface$user)
。请注意,$username
只是一个关键字,实际上意味着“无论什么”,只要您尊重接口,您可以在这里自由提供您需要的任何内容,以针对您的定制服务进行身份验证。正如@Cerad所说,新的GuardAuthenticator
使用起来简单得多。@BorisGuéry-这并不是说他们不能实现loadUserByUsername,而是他们真正想要的是loadUserByUsername和Password。可悲的是,它并不存在。几年前我也有同样的问题。当时,实现自己的验证器更具挑战性。@Cerad,这正是我想指出的。此处的$username
的目的不是提供一个通用用户名/密码组合中使用的用户名,而是提供任何您想用作用户名的内容。它可能是电子邮件、令牌,甚至是用户名
和密码
的组合。通过提供由提供商识别的自定义格式字符串,或者通过返回一个通用/伪用户
实现,您可以从中检索用户名
,并在实现身份验证提供程序
或新的GuardAuthentication
时使用它。我无法通过电子邮件用户名或其他方式访问用户。我无法提供web服务中的用户列表,因此我看不到UserProvider的意义。我用loadUserByUserName和password($username,$password)方法创建了自定义UserProvider,但symfony在调用我的web服务登录函数的每个页面加载上调用refreshUser,所以我在自定义验证器中移动了auth登录,但symfony仍然调用refreshUser。。。