別のサイトの代わりにホームページにログインします。/loginルートに資格情報を入力すると、すべては問題ありませんが、/ routeでは動作しません。Symfony3:別のサイトでレンダリングしたときにログインフォームが機能しない
私は(テスト目的のために、私は今、各ページにログインフォームをレンダリングしたい)base.html.twigに、このコマンドを使用してログインフォームをレンダリング:ここ
{{ render(controller("AppBundle:Security:login")) }}
は私login.html.twigです:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form action="{{ path('login') }}" method="post">
<div class="form-group">
<input type="text" class="form-control" id="username" placeholder="Email" name="_username" value="{{ last_username }}" />
<input type="password" class="form-control" id="password" placeholder="Heslo" name="_password" />
</div>
<button type="submit" class="btn btn-success">Přihlásit</button>
<a href="/registration" class="btn btn-info" role="button">Registrovat</a>
</form>
そして、私のLoginActionの:security.ymlファイルで
/**
* @return array
* @Route("/login", name="login")
* @Template()
*/
public function loginAction()
{
$authenticationUtils = $this->get('security.authentication_utils');
// get error
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return [
'last_username' => $lastUsername,
'error' => $error
];
}
そしてsecured_area:
secured_area:
pattern: ^/
anonymous: ~
provider: main
form_login:
login_path: login
check_path: login
logout:
path: /logout
target:/
ログインフォームは正常にホームページに表示されます。しかし、資格情報を入力してボタンをクリックすると、何も起こりません。おそらく、ボタンが、ログインページ用に定義されたアクションの代わりに、ホームページ用に定義されたアクションのフォームを見つけようとしているのでしょうか?
代わりに元の(ログイン)アクションを使用するようにボタンを強制するオプションはありますか?
ありがとうございました。
はありがとう:セットアップする方法フォームベースのログインを、ドキュメント内の専用料理の記事をご確認の詳細な手順については
。私はsymfonyにはまったく新しいので、check_pathにフォームを投稿する方法はわかりません。私は私の質問を更新しました - security.ymlの一部を追加しました。 check_pathの別のページを作成する必要がありますか?あなたは物事を働かせる方法の例を挙げていただけますか?ありがとうございます –
私はあなたの答えをもう一度読んでいます。セキュリティ拡張がロギングを処理する必要があることを意味しますか?多分、レンダリングコントローララインがバグを引き起こすでしょうか?ロギングのためにボタンをクリックすると何も起こりません。ログインが失敗した場合、ボタンは/ loginにリダイレクトされるはずですか?送信ボタンにはパラメータがないことがわかります。/login以外のページでフォームをレンダリングすると、symfonyはロギングのボタンであることをどのように知ることができますか? –
login_pathにcheck_pathと同じルートを使用しているようです。異なるURLを持つcheck_pathの新しいルートを作成する必要があります。その後、フォームタグで、アクションプロパティのチェックパスへのURLを生成する必要があります。 – Gerry