Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2.8自定义身份验证_Php_Symfony_Authentication - Fatal编程技术网

Php Symfony 2.8自定义身份验证

Php Symfony 2.8自定义身份验证,php,symfony,authentication,Php,Symfony,Authentication,我需要使用第三方web服务进行自定义表单登录身份验证。问题是我无法实现UserProvider的方法loadUserByUsername($username)。另外,symfony在调用loadUserByUsername的每个页面加载上调用refreshUser(UserInterface$user)。。我的服务只有一个方法接受用户名和密码,如果它们有效,则返回success,否则返回false。我可以忽略UserProvider和与之相关的所有内容吗???任何建议。否您不能忽略用户提供程序,

我需要使用第三方web服务进行自定义表单登录身份验证。问题是我无法实现
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。。。