symfony2 自定义密码编码器与用户数据



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

namespace TykaynMeluzineBundleServices;
class MyPasswordEncoder extends  SymfonyComponentSecurityCoreEncoderBasePasswordEncoder 

{

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));
    }
}

找到了一些不错的方法:

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

namespace SdzUserBundleSecurityEncoder;
use SymfonyComponentSecurityCoreEncoderBasePasswordEncoder;
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: "SdzUserBundleSecurityEncoderCustomEncoder"
    arguments: [ @Doctrine]

配置全局安全性.yml

security:

encoders:
    # encodeur de password selon l'ancienne façon
    FOSUserBundleModelUserInterface:
        id: sdz_user.custom_encoder

相关内容

  • 没有找到相关文章

最新更新