Symfony2 UserSecurityEncoder实现自己的验证方式

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
时间: 2024-09-30 18:46:43

Symfony2 UserSecurityEncoder实现自己的验证方式的相关文章

关于 SQLNET.AUTHENTICATION_SERVICES 验证方式的说明

今天去客户那里巡检,客户提出为了提高数据库安全性考虑,需要修改sys/system密码,并通过数据库验证方式来取代默认的操作系统方式,现在我来把这两种验证方式总结一下. 操作系统验证,即通过操作系统账户的权限访问数据库,举个例子,如果已经拥有了windows下的系统管理员administrator的权限,那么当采用该方式验证的话,无需输入用户/密码就可以访问,比如:sqlplus / as sysdba;哪怕是任意输入的用户名和密码,也无所谓,比如:sqlplus abc/efg as sysd

ASP.net的身份验证方式有哪些?

[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问

Windows下搭建Openvpn使用用户名和密码验证方式如何引用shell脚本

网上找了很多资料关于Openvpn使用用户名和密码验证方式的大都是在linux环境下搭建的.其实在windows下搭建可以参考linux的情况,可以找到很多资料,主要遇到的问题是如何引用那个checkpw.sh的shell脚本.这里记下自己的经验. 为了引用此脚本,看了网上一个博客后有了点idea.首先安装Cygwin,Cygwin是一个在windows平台上运行的类UNIX模拟环境.之后写一个bat文件,如script.bat: C:/cygwin64/bin/bash.exe  C:/che

Yii2在Form中处理短信验证码的Validator,耦合度最低的短信验证码验证方式

短信验证码在目前大多数web应用中都会有,本文介绍一个基于Yii2 Validator方式的验证码验证方式. 在其他文章中看到的方式大多比较难做到一次封装,多次重用. 使用此方式的好处自然不用多说,Validator支持在Model和Form中使用,使用的时候只需要在rules中添加一条验证规则即可. 第一步: 准备数据表,用来存储短信验证码 CREATE TABLE `tbl_sms_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `to` varch

Integrated Security 身份验证方式

server=localhost;database=Northwind; integrated security=SSPI Microsoft安全支持提供器接口(SSPI)是定义得较全面的公用API,用来获得验证.信息完整性.信息隐私等集成安全服务,以及用于所有分布式应用程序协议的安全方面的服务.应用程序协议设计者能够利用该接口获得不同的安全性服务而不必修改协议本身. Integrated Security 身份验证方式 当为false时,将在连接中指定用户ID和密码. 当为true时,将使用当

《Java从入门到放弃》入门篇:Struts2的常用验证方式

感觉过了一个周末,人都懒得不要不要的,今天就来点简单的内容吧 - -,各位看官如果欲求不满的话,可以自行解决或再去宠幸其他"勃主"··· struts2的验证方式主要有四种方式: 一.直接在功能方法中写验证代码(不要扔鸡蛋,这种办法确实算一种) 二.重写validate方法(注意这个方法会验证该类中所有的方法) 三.使用ValidateXxx方法(Xxx对应要验证的方法的方法名) 四.用struts2的验证框架(也就是使用配置文件的方式来实现,这种方法个人觉得应该属于放弃篇的内容,为什

服务器身份验证方式

服务器身份验证方式: 1.是基于Cookie的身份验证,使用服务器端的cookie来对每次请求的用户进行身份验证. 2. 较新的方法,基于令牌Token-Based的认证,依赖于被发送到服务器上每个请求的签署令牌. 为什么基于令牌token-based的方式更好呢?理由如下:1.跨域 / CORS: cookies + CORS 并不能跨不同的域名.而基于令牌能够使用 AJAX 调用服务器,在任何域名下你都可以使用HTTP header头部来传输用户信息. 2. 无态(代表服务器端可伸缩): 没

如何更改SQL Server 2008 登陆验证方式

配置SQL Server的身份验证方式 在 默认情况下,SQL Server 2005 Express是采用集成的Windows安全验证且禁用了sa登录名.为了工作组环境下不使用不方便的 Windows集成安全验证,我们要启用SQL Server 2005 Express的混合安全验证,也就是说由SQL Server来验证用户而不 是由Windows来验证用户. 1.使用SQL Server Management Studio Express. 当 我们启动SQL Server Manageme

WebService的几种验证方式

转 http://www.cnblogs.com/yoshiki1895/archive/2009/06/03/1495440.html WebService的几种验证方式 1.1      WebService设计 1.1.1   传输基本参数 1.1.2   传输数据集合 (1)     数组 (2)     DataSet 1.2      WebService异常处理 1.3      WebService性能 1.4      WebService认证 请参考WebService认证学