Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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.0:如何正确地将用户身份验证委托给单独的服务?_Php_Security_Authentication_Symfony - Fatal编程技术网

Php Symfony 2.0:如何正确地将用户身份验证委托给单独的服务?

Php Symfony 2.0:如何正确地将用户身份验证委托给单独的服务?,php,security,authentication,symfony,Php,Security,Authentication,Symfony,在我帮助开发的Symfony 2.0 web应用程序中,我们使用自定义的书面服务进行用户身份验证,该服务与应用程序本身分开使用。我需要使用此服务为应用程序实施身份验证\授权 我已经阅读了Symfony 2的“安全”一章,以及有关创建自定义用户和身份验证提供者的cookbok条目。不幸的是,我似乎不能仅仅创建自定义用户提供者,因为我无法通过登录使用该服务来检索用户的数据。我只能提交用户的登录名/密码,并查看服务是否对其进行身份验证 这就是为什么我想到编写一个自定义身份验证提供程序。问题是,在阅读了

在我帮助开发的Symfony 2.0 web应用程序中,我们使用自定义的书面服务进行用户身份验证,该服务与应用程序本身分开使用。我需要使用此服务为应用程序实施身份验证\授权

我已经阅读了Symfony 2的“安全”一章,以及有关创建自定义用户和身份验证提供者的cookbok条目。不幸的是,我似乎不能仅仅创建自定义用户提供者,因为我无法通过登录使用该服务来检索用户的数据。我只能提交用户的登录名/密码,并查看服务是否对其进行身份验证

这就是为什么我想到编写一个自定义身份验证提供程序。问题是,在阅读了cookbook条目之后,我不完全确定如果我编写了一个根本不使用用户提供程序的身份验证提供程序,那么使用身份验证提供程序的框架代码将不会尝试创建并使用用户提供程序(我想如果它会的话,它将只是实例化并使用一些默认的?)


有人对这件事有什么想法吗?

听起来你的思路是对的。你将创建你的,同时也创建一个。因为你的用户提供商实际上不需要访问任何数据源,所以它将是相当空的。可能只需返回一个带有给定用户名的新用户对象

public function loadUserByUsername($username)
{
    return new User($username);
}

那么用户的密码呢?框架真的不会在黑暗的角落里尝试使用它来影响身份验证过程吗?我还没有测试你建议的方法是否有效,因为我们已经连续4次放假,但我肯定会在接下来的一周内尝试。我仍然没有测试它,因为我不得不进一步挖掘Symfony的源代码,但我认为这部分会很好地工作。非常感谢。我也有顾虑。没有web服务将仅基于用户名提供密码和其他数据。是否有任何解决方案?或者如何在loadUserByUsername()函数中获取登录表单密码值?