Php 使用md5密码登录Symfony2

Php 使用md5密码登录Symfony2,php,symfony,Php,Symfony,您好,我正在尝试使用Symfony2登录,并在md5中使用密码登录数据库表,无盐字段。我有很多用户,我不能改变它 当我发送带有无效电子邮件的表单时,登录似乎工作正常,它返回正确的消息“坏凭据”。但是,当我发送带有良好电子邮件的表单时,它会显示“提交的密码无效” 怎么了 我配置防火墙: security: encoders: Usuari\BackendBundle\Entity\Usuari: algorithm: md5 在Usuari实体中实

您好,我正在尝试使用Symfony2登录,并在md5中使用密码登录数据库表,无盐字段。我有很多用户,我不能改变它

当我发送带有无效电子邮件的表单时,登录似乎工作正常,它返回正确的消息“坏凭据”。但是,当我发送带有良好电子邮件的表单时,它会显示“提交的密码无效”

怎么了

我配置防火墙:

security:
    encoders:
        Usuari\BackendBundle\Entity\Usuari:
            algorithm: md5
在Usuari实体中实现UserInterface,无需任何限制

    public function getUsername()
    {
        return $this->email;
    }

    public function getSalt() { 
        return '';
    }

    public function getPassword()
    {
        return $this->clau;
    }

    public function getRoles()
    {
        return array('ROLE_ADMIN');
    }

    public function eraseCredentials() { }

    public function equals(UserInterface $user)
    {
        return $this->email === $user->getUsername();
    }
和安全控制/登录路径:

namespace Mes\BackendBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;


    class SecurityController extends Controller
    {
        public function loginAction()
        {
            $request = $this->getRequest();
            $session = $request->getSession();

            // get the login error if there is one
            if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
                $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
            } else {
                $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
            }

            return $this->render('MeBackendBundle:Security:login.html.twig', array(
                // last username entered by the user
                'last_username' => $session->get(SecurityContext::LAST_USERNAME),
                'error'         => $error,
            ));
        }
    }
    ?>

算法:sha1
更改为
算法:md5
算法:sha1
更改为
算法:md5
我处于类似的情况。我所做的是创建了单独的编码器,以便旧用户可以使用旧算法登录,而新用户可以使用symfony的默认编码器获得更安全的密码


我发布了一个非常广泛的答案

我当时也处于类似的情况。我所做的是创建了单独的编码器,以便旧用户可以使用旧算法登录,而新用户可以使用symfony的默认编码器获得更安全的密码


我发布了一个非常广泛的答案

托马斯,这个解决方案似乎很好,但它更复杂


最后,我决定使用其他编码函数和salt字段从数据库中重新生成所有密码。我将向所有用户发送一封电子邮件,其中包含一个允许这些用户更改其密码的链接。托马斯,这个解决方案似乎很好,但它更复杂


最后,我决定使用其他编码函数和salt字段从数据库中重新生成所有密码。我将向所有用户发送一封电子邮件,其中包含一个链接,允许这些用户更改其密码

不要说您无法更改密码。我们将一个站点从Drupal迁移到我们的Symfony2系统,拥有超过10万用户,我们选择在用户首次登录新系统后强制更新密码,这样我们就可以尽快摆脱MD5。MD5不好,是的。顺便说一句,看看我的。因为我没有用户的真实密码。我只有md5散列。大卫,检查托马斯K的答案。不要说你不能改变它。我们将一个站点从Drupal迁移到我们的Symfony2系统,拥有超过10万用户,我们选择在用户首次登录新系统后强制更新密码,这样我们就可以尽快摆脱MD5。MD5不好,是的。顺便说一句,看看我的。因为我没有用户的真实密码。我只有md5哈希。大卫,检查托马斯K的答案。对不起,我的思想背叛了我。我更正了这个问题,md5不起作用。请尝试
md5()
您尝试登录的密码,并检查它是否与数据库中的密码相同。对不起,我的大脑背叛了我。我更正了这个问题,因为md5不起作用,请尝试使用您尝试登录的密码
md5()
,并检查它是否等于数据库中的密码。