开发者

PHP Symfony - Form processing questions

开发者 https://www.devze.com 2023-01-18 03:23 出处:网络
I am trying to build my own user authentication system (simply because the ones out there are too convoluted and big).

I am trying to build my own user authentication system (simply because the ones out there are too convoluted and big).

I have trouble getting to grasps with the Symfony form processing though. Am looking at sfDoctrineGuardPlugin, but for the life of me, can't figure out, when the inputted password is converted to a SHA1 hash before being save开发者_高级运维d into the db.

Where can I read up on the form processing and automagical stuff that doctrine might do in between? I've been looking at "A Gentle Introduction to Symfony", but it's not really helping.

I found out, it's happening somewhere in the updateObject() Method.

    if ($request->isMethod('post'))
    {
      $this->form->bind($request->getParameter($this->form->getName()));
      if ($this->form->isValid())
      {
        var_dump($this->form->getObject()->password);
        $this->form->updateObject();
        var_dump($this->form->getObject()->password);
      }
    }
// Prints:
// null
// string '989d88b585ce29839687f2938303e828e191ecef' (length=40)

But am having trouble finding the implementation of that method, and what exactly it calls/does.

Can anyone shed some light? I just want to understand what Symfony is doing in the background. I think there's too much magic going on and the documentation is lacking sometimes.


http://trac.symfony-project.org/browser/plugins/sfDoctrineGuardPlugin/branches/1.3/lib/model/doctrine/PluginsfGuardUser.class.php#L33

  public function setPassword($password)
  {
    if (!$password && 0 == strlen($password))
    {
      return;
    }

    if (!$salt = $this->getSalt())
    {
      $salt = md5(rand(100000, 999999).$this->getUsername());
      $this->setSalt($salt);
    }
    $modified = $this->getModified();
    if ((!$algorithm = $this->getAlgorithm()) || (isset($modified['algorithm']) && $modified['algorithm'] == $this->getTable()->getDefaultValueOf('algorithm')))
    {
      $algorithm = sfConfig::get('app_sf_guard_plugin_algorithm_callable', 'sha1');
    }
    $algorithmAsStr = is_array($algorithm) ? $algorithm[0].'::'.$algorithm[1] : $algorithm;
    if (!is_callable($algorithm))
    {
      throw new sfException(sprintf('The algorithm callable "%s" is not callable.', $algorithmAsStr));
    }
    $this->setAlgorithm($algorithmAsStr);

    parent::_set('password', call_user_func_array($algorithm, array($salt.$password)));
  }
0

精彩评论

暂无评论...
验证码 换一张
取 消