FOSUserBundleをインストールしましたが、ログインフォームが別のログインページではなくホームページに表示される必要がありますが、HomeBundle:Default:indexによって制御されるホームページに含まれている必要があります。
したがって、ログインが必要なページにアクセスすると、ログインフォームがあるホームページにリダイレクトされます。
これを行うために:私は変更しましたvendor > friendsofsymfony > user-bundle > FOS > Resources > routing > security.xml
<route id="fos_user_security_login" pattern="/login"> <default key="_controller">FOSUserBundle:Security:login</default> </route>
ホームページを表示するコントローラーをポイントします。これは機能します(ログインページが表示されます)が、ここで問題が発生します。ログインしようとすると、ログインせず、代わりに同じページが表示されます。入力の名前は正しく、デフォルトのログインフォームと同じ値であるde"action"です。
デフォルトでログインページを使用するとログインするので、dbは問題ありません。ログインプロセスで、このコードを理解する$errorを出力する可能性のあるエラーを出力しようとしました。
$ request = $ this-> container-> get('request'); / * @var $ request \ Symfony \ Component \ HttpFoundation \ Request / $ session = $ request-> getSession(); / @var $ session \ Symfony \ Component \ HttpFoundation \ Session * /
// get the error if any (works with forward and redirect -- see below)
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
} else {
$error = '';
}
if ($error) {
// TODO: this is a potential security risk (see http://trac.symfony-project.org/ticket/9523)
$error = $error->getMessage();
}
// last username entered by the user
$lastUsername = (null === $session) ? '' : $session->get(SecurityContext::LAST_USERNAME);
$csrfToken = $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate');
しかし、エラーはないようです。