Symfony:在登录检查时在密码中添加salt的侦听器(或其他内容)

Symfony:在登录检查时在密码中添加salt的侦听器(或其他内容),symfony,login,passwords,salt,Symfony,Login,Passwords,Salt,当用户注册时,我会在密码中添加一个salt: $user->setPassword( $this->passwordEncoder->encodePassword( $user, $newPassword.$user->getSalt() ) ); 但是现在,当用户登录时,我如何在用户密码中添加相同的盐? 仅供参考,我没有带loginAction的控制器!我的应用程序是用reactJs和symfonyapi构建的。因此,我

当用户注册时,我会在密码中添加一个salt:

$user->setPassword(
    $this->passwordEncoder->encodePassword(
        $user,
        $newPassword.$user->getSalt()
    )
);
但是现在,当用户登录时,我如何在用户密码中添加相同的盐?
仅供参考,我没有带loginAction的控制器!我的应用程序是用reactJs和symfonyapi构建的。因此,我只需要进行登录检查。

编码器有一个
isPasswordValid
方法:

$this->passwordEncoder->isPasswordValid(
    $user->getPassword(), // the user’s encrypted password in the DB
    $password,            // cleartext password as provided through UI or API
    $user->getSalt()      // the salt stored in the DB
);

注意:此方法不会引发异常,而是返回布尔值。如果它返回
false
,您必须适当地处理它,例如您自己抛出一个异常。

这是我的工作示例Sf4(我在custom UserProvider和ApiPlatform上使用)

}

另外,你不需要担心如何编码密码和检查用户 只需定义防火墙

 firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    docs:
        pattern:    ^/docs
        http_basic: ~
        provider: user_provider
    login:
        pattern:  ^/login
        stateless: true
        anonymous: true
        provider: user_provider
        json_login:
            check_path: /login_check
            username_path: username
            password_path: password
            success_handler: lexik_jwt_authentication.handler.authentication_success
            failure_handler: lexik_jwt_authentication.handler.authentication_failure
您可以发送post/登录检查


salt存储在用户表中,并将作为检查登录过程的一部分进行检索,因此不清楚您在问什么。如何在注册期间生成salt?当然,现在不需要显式salt,所以我假设您正在处理遗留应用程序?而且用密码撒盐毫无意义。谢谢lxg的回答:)这不是一个遗留应用程序。我想我不知道怎样才能正确输入密码。我必须在用户数据库中添加salt,当用户登录时,salt将自动检索?首先,通过。除非你正在做一些非常不寻常的事情,否则你可能根本不必担心盐的问题。特别是如果您使用的是bycrypt密码编码器。它负责为您生成salt,并将其散列到散列密码本身中。不需要显影剂盐。在任何情况下,首先要让基本的登录功能正常工作,这样您就可以看到所有部分是如何组合在一起的。然后定制,如果需要的话。哦!很抱歉我的问题毫无意义!现在,多亏了你,我才明白我的错误
 firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    docs:
        pattern:    ^/docs
        http_basic: ~
        provider: user_provider
    login:
        pattern:  ^/login
        stateless: true
        anonymous: true
        provider: user_provider
        json_login:
            check_path: /login_check
            username_path: username
            password_path: password
            success_handler: lexik_jwt_authentication.handler.authentication_success
            failure_handler: lexik_jwt_authentication.handler.authentication_failure
{ "username":"username","password":"password"}