【问题标题】:symfony2 custom passwordEncoder with user data带有用户数据的 symfony2 自定义密码编码器
【发布时间】:2014-05-13 18:31:08
【问题描述】:

我使用 symfony 2.4 迁移旧的用户系统, 我想大量使用 FOSUserBundle 和 encodePassword 函数来使用用户的某些属性(例如,它的 id),但我找不到将 $myUserObject 插入这个 MyPasswordEncoder 类的方法。

namespace Tykayn\MeluzineBundle\Services;
class MyPasswordEncoder extends  \Symfony\Component\Security\Core\Encoder\BasePasswordEncoder 

{

public function encodePassword($raw, $salt, **$myUserObject** )
    {
        return sha1('blahblah' . $raw . 'blehbleh'. $salt. $myUserObject->id ) ;
    } 
public function isPasswordValid($encoded, $raw, $salt)
    {
        return $this->comparePasswords($encoded, $this->encodePassword($raw, $salt));
    }
}

【问题讨论】:

    标签: php security symfony passwords encoder


    【解决方案1】:

    找到了一些好方法:

    在扩展 FOSuserbundle 的用户包中创建自定义密码编码器。

    namespace Sdz\UserBundle\Security\Encoder;
    use Symfony\Component\Security\Core\Encoder\BasePasswordEncoder;
    
    class CustomEncoder extends BasePasswordEncoder {
    public function encodePassword($raw, $salt) {
    // do doctrine stuff to get the user info
    return $hashed;
        }
    public function isPasswordValid($encoded, $raw, $salt) {
      return $this->comparePasswords($encoded, $this->encodePassword($raw, $salt));
        }
    }
    

    将编码器注册为 myuserbundle 的服务,将其注入到学说服务中。

    services:
    sdz_user.custom_encoder:
        class: "Sdz\UserBundle\Security\Encoder\CustomEncoder"
        arguments: [ @Doctrine]
    

    配置全局security.yml

    security:
    
    
    encoders:
        # encodeur de password selon l'ancienne façon
        FOS\UserBundle\Model\UserInterface:
            id: sdz_user.custom_encoder
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多