首页 > 解决方案 > Symfony 自定义用户提供程序

问题描述

我正在阅读 Symfony 通过自定义用户提供程序管理用户的方式:https ://symfony.com/doc/current/security/custom_provider.html

当用户提交用户名和密码时,身份验证层要求配置的用户提供程序返回给定用户名的用户对象。Symfony 然后检查这个用户的密码是否正确并生成一个安全令牌

当我们在本地使用用户/密码连接到数据库时,这非常有用,但我想针对另一个服务进行身份验证。基本上,我想使用 Symfony 作为使用用户登录服务的客户端。这就是我的做法,只是我无法访问此处的密码。

public function loadUserByUsername($username)
{
    $client = new Client(['base_uri' => $uri]);
    $user_response = $client->get('api/v1/getTokens/', ['auth' => [$username, <passord>]);
    // $user_response 
}

这与 Symfony 所期望的有很大不同,后者是接收用户对象,然后在用户/密码匹配时发出它自己的令牌。

我应该为自己的系统放弃整个自定义提供程序界面吗?

标签: phpsymfonyauthentication

解决方案


您需要一个AuthenticationProvider与您编写的 UserProvider 一起使用。

还要检查保护身份验证


推荐阅读