【问题标题】:Symfony Custom User ProviderSymfony 自定义用户提供程序
【发布时间】:2018-09-18 14:19:53
【问题描述】:

我正在阅读 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 所期望的有很大不同,后者是接收用户对象,然后在用户/密码匹配时发出它自己的令牌。

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

【问题讨论】:

  • Symfony 安全组件可以说是最复杂的组件。开始时容易走错路。 UserProvider 用于加载用户。没有连接到身份验证。所以,是的,放弃吧。您可能想要的是一个可能基于保护验证器的自定义验证器。 symfony.com/doc/current/security/guard_authentication.html
  • 试用 KNP OAuth 客户端捆绑包github.com/knpuniversity/oauth2-client-bundle
  • @Cerad 不仅是你上面所说的,而且这是一种方式构建的,现在我们的实施方式完全不同,我必须弄清楚我们保留什么,丢弃什么。

标签: php symfony authentication


【解决方案1】:

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

还要检查 Guard Authentication

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多