Symfony2.0.xのFOSUserBundleについて質問があります。そこのドキュメントでは、ユーザー名と電子メールのいずれかで機能するようにログインを変更する方法を見つけることができます。それはうまくいきます!しかし、私はメールだけで作業するためにログインしたいと思います。そこで、CustomUserManagerに関数を追加しました(元の関数から拡張)。これにより、電子メールでログオンできるようになります。
namespace Frontend\UserBundle\Model;
use FOS\UserBundle\Entity\UserManager;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
class CustomUserManager extends UserManager
{
public function loadUserByUsername($email)
{
/*$user = $this->findUserByUsernameOrEmail($username);
if (!$user) {
throw new UsernameNotFoundException(sprintf('No user with name "%s" was found.', $username));
}
return $user;*/
//Change it to only email (Default calls loadUserByUsername -> we send it to our own loadUserByEmail)
return $this->loadUserByEmail($email);
}
public function loadUserByEmail($email)
{
$user = $this->findUserByEmail($email);
if (!$user) {
throw new UsernameNotFoundException(sprintf('No user with email "%s" was found.', $email));
}
return $user;
}
}
しかし今、セッションに保存される値を制御する必要があるという問題があります。彼は私のユーザー名をセッションに保存し、システムがこれをチェックすると、利用可能な電子メールはありません(彼は電子メールのみをチェックするため)。
だから私の質問は、username変数内に格納されている値をどのように/どこで変更できるかということです。
ありがとう!