你好我正在嘗試使用Symfony2和數據庫表進行登錄,密碼在md5中沒有鹽字段。我有很多用戶,我無法改變它。用md5密碼登錄Symfony2
當我發送帶有無效電子郵件的表單時,登錄似乎正常工作,它將返回右邊的「Bad credentials」消息。但是,當我發送帶有良好電子郵件的表單時,它會顯示「提供的密碼無效」。
怎麼了?
我配置防火牆:
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();
}
和安全controlles在/登錄路由:
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,
));
}
}
?>
不要說你不能改變它。我們從遷移Drupal的一個網站,我們的Symfony2的系統,擁有超過10萬用戶,我們選擇以強制爲新系統上首次登錄後用戶密碼更新,所以我們可以得到儘快擺脫MD5的越好。 MD5是壞的。 –
是的。順便說一句,看看我的[河豚密碼編碼器捆綁(https://github.com/elnur/ElnurBlowfishPasswordEncoderBundle)。 –
因爲我沒有用戶的真實密碼。我只有md5散列。 – David