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


Symfony 2.0: How to correctly delegate user authentication to a separate service?

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

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

这就是我想编写自定义身份验证提供程序的原因。问题是,在阅读了说明书条目后,我不完全确定如果我编写一个根本不使用用户提供程序的身份验证提供程序,则使用身份验证提供程序的框架代码不会尝试创建和使用用户提供程序(我想如果它会,它只会实例化并使用一些默认提供程序?

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

听起来你走在正确的轨道上。您将创建自定义身份验证提供程序,并创建自定义用户提供程序。由于您的用户提供程序似乎实际上不需要访问任何数据源,因此它将相当空。可能只是返回一个新的 User 对象,其中包含给定的用户名。

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