码迷,mamicode.com
首页 > 其他好文 > 详细

Symfony2 UserSecurityEncoder实现自己的验证方式

时间:2014-09-19 02:18:14      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   使用   ar   div   sp   

fosuserbundle默认使用sha512加密

如果要实现自己的加密方式 需要继承Symfony\Component\Security\Core\Encoder\BasePasswordEncoder

<?php

namespace Mc\AdminBundle\Security\Encoder;

use Symfony\Component\Security\Core\Encoder\BasePasswordEncoder;
use Symfony\Component\SecurityCore\Exception\BadCredentialsException;

class JoomlaPasswordEncoder extends BasePasswordEncoder
{
    private $cost;

    public function __construct( $cost)
    {
        $cost = intval( $cost);
        if( $cost < 4 || $cost > 31 )
        {
            throw new \InvalidArgumentException(‘Cost too long , it must be in the range of 4-31‘);
        }
        $this->cost = sprintf(‘%02d‘ , $cost);
    }

    public function encodePassword( $raw , $salt = null )
    {
        if( $this->isPasswordTooLong($raw) )
        {
            throw new BadCredentialsException(‘Invalid password.‘);
        }
        return md5( md5( $raw ) . $salt );
    }

    public function isPasswordValid($encoded, $raw, $salt = null)
    {
        if ($this->isPasswordTooLong($raw)) 
        {
            return false;
        }


        return md5( md5( $raw).$salt) === $encoded;
    }
}
然后写入service

在bundle下面的Resources/config/services.yml(或者xml)添加一个服务:

    mc_user.security.core.encoder:
        class: Mc\AdminBundle\Security\Encoder\JoomlaPasswordEncoder
        arguments: [6]
也可以在DependencyInjection/Configuration.php中添加参数:

        $rootNode->children()
                    ->scalarNode(‘cost‘)->defaultValue(6)->end()
                    ->end()
        ;
最后在app/config/security.yml中设置自己的加密方式 这里用户组件是FOSUserBundle:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        FOS\UserBundle\Model\UserInterface:
            id: mc_user.security.core.encoder
这里的id是service名 即 mc_user.encoder

done

 

Symfony2 UserSecurityEncoder实现自己的验证方式

标签:style   blog   color   io   os   使用   ar   div   sp   

原文地址:http://www.cnblogs.com/huidaoli/p/3980497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!