当前位置: 首页 > 知识库问答 >
问题:

Symfony安全/自定义用户提供程序:如何在自定义用户提供程序中获取登录密码?

梁丘招
2023-03-14

我正在使用Symfony Security和系统中的自定义用户提供程序。它通过web服务为用户提供服务。
我根据本教程配置提供程序(http://symfony.com/doc/current/cookbook/security/custom_provider.html).

这里是检查用户的功能:

public function loadUserByUsername($username)
{
    $userData = webServiceCheckUser($username);
    // return an array whit user credentials
    if ($userData) {
        $password = $userData['password'];
        $salt = $userData['salt'];
        $roles = $userData['roles'];
        $user = new WebserviceUser($username, $password, $salt, $roles);
        return $user;
    }
    throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
}

这很好,函数webServiceCheckUser()使用用户名调用一个web服务,然后返回一个包含用户数据的数组。但是现在我需要通过另一个web服务来检查用户,该服务需要用户的用户名和加密密码来验证他的身份。我有一个加密纯文本密码的函数,就像web服务正在等待一样,但我无法获取用户在自定义用户提供程序类中的登录表单中键入的密码。如果我能得到已经加密的密码也没关系。任何一个都能解决问题。

无论如何都要这样做吗?

共有1个答案

栾和玉
2023-03-14

@Pazi是正确的,因为构建您自己的自定义身份验证提供程序将起作用。然而,这不是一项容易的任务。

另一种方法是重写DaoAuthentiationProvider,并让它将密码传递给loadUser函数。

security_listeners.xml:        
    <parameter key="security.authentication.provider.dao.class">
      Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider
    </parameter>

也许有点麻烦,但它节省了大量的工作。

 类似资料:
  • 我正在尝试创建一个自定义的KeyClope提供程序,它将为登录逻辑添加一些内容。我已经读过如何为KeyClope创建提供者(或插件),我正在与之合作的项目中已经有一个提供者(或插件),但我对它们知之甚少。 我需要为用户身份验证/授权添加自定义逻辑:我希望能够检查内部数据库中的一些字段来验证人员帐户。但是我没有找到任何关于类似情况的指南或好文章。有人能给我提供一些关于从什么开始的链接吗?为了实现这样

  • 我将为我的网站创建自定义用户提供程序,对于用户来说,没有“用户名”和“密码”这样的概念(实际上有类似于密码的东西,但它的名称不同)。在文档中,用户实体必须实现来自安全包的UserInterface,该安全包具有诸如getUsername、getPassword之类的方法。我能用我自己的领域吗?或者我应该使用名称冲突(例如,getUsername将返回我的唯一字段)来实现我的行为吗?

  • 问题内容: Sun的PKCS11 JCE安全提供程序缺少我们需要的某些功能。 因此,我使用原始资源编写了它的增强版本。 不幸的是,JCE基础结构拒绝新的提供者 “ JCE无法验证提供者”, 因为它没有正确签名。 抛出。 (呼叫) 关于如何签署新提供商以使其与JCE一起工作的任何建议? 问题答案: 该过程在文档“如何实现 提供者”中进行了描述。 它涉及到电子邮件 太阳向Oracle提供一些信息(包括

  • 我有一个Laravel5.4应用程序,在其中我必须通过外部API验证我的管理员用户,当成功登录时,它会返回一个包含用户信息的JSON。 我正在创建一个自定义保护,使此: 这是我的定制提供商: 在那之后,我不知道如何继续。我读过一些教程,比如George Buckingham的教程,我创建了一个自定义用户提供程序(现在我只需要它从EloquentUserProvider扩展,最终我将覆盖一些函数以连

  • 我的配置是: < li>Grails框架3.0.11 < Li > " org . grails . plugins:spring-security-core:3 . 0 . 3 " < Li > " org . grails . plugins:spring-security-oauth 2-provider:3 . 0 . 0-RC1 " 我已经指定了我的自定义用户详细信息服务(实现Grail

  • 我使用的是Spring Boot 2.0(利用Spring Security 5.0)。我正在尝试向WebSecurityConfigureAdapter子类中的AuthenticationManager添加自定义AuthenticationProvider。如果我重写configure(AuthenticationManagerBuilder)方法来提供我的新提供者,那么我不知道如何将Authe