Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github

Como personalizar o seu Formulário de Login

Usar um formulário de login para autenticação é é um método comum e flexível para lidar com a autenticação no Symfony2. Praticamente todos os aspectos do formulário de login podem ser personalizados. A configuração padrão completa é mostrada na próxima seção.

Configuração de Referência do Formulário de Login

Redirecionando após Sucesso

Você pode alterar o local para onde o formulário de login redireciona após um login bem-sucedido usando opções de configuração diferentes. Por padrão, o formulário irá redirecionar para a URL solicitada pelo usuário (ou seja, a URL que acionou o formulário de login que está sendo exibido). Por exemplo, se o usuário solicitou http://www.example.com/admin/post/18/edit, então, após o login bem-sucedido, ele será enviado de volta para http://www.example.com/admin/post/18/edit . Isto é feito através do armazenamento da URL solicitada em sessão. Se nenhuma URL estiver presente na sessão (talvez o usuário acessou diretamente a página de login), então, o usuário é redirecionado para a página padrão, que é / (ou seja, a homepage). Você pode alterar esse comportamento de várias formas.

Note

Como mencionado, por padrão, o usuário é redirecionado para a página que ele solicitou originalmente. Às vezes, isso pode causar problemas, como, por exemplo, uma requisição AJAX em background “aparece” sendo a última URL visitada, fazendo com que o usuário seja redirecionado para lá. Para informações sobre como controlar esse comportamento, consulte Como alterar o comportamento padrão do Target Path.

Alterando a Página Padrão

Primeiro, a página padrão pode ser definida (ou seja, a página para a qual o usuário será redirecionado se nenhuma página anterior foi armazenada em sessão). Para configurá-la para /admin use a seguinte configuração:

Agora, quando não houver uma URL definida na sessão, os usuários serão enviados para /admin.

Sempre Redirecionar para a Página Padrão

Você pode fazer com que os usuários sejam sempre redirecionados para a página padrão, independentemente da URL que eles tenham solicitado anteriormente, definindo a a opção always_use_default_target_path para true:

Usando a URL de referência (Referring URL)

No caso de nenhuma URL anterior estar armazenada em sessão, você pode desejar usar o HTTP_REFERER no lugar, pois este, muitas vezes, é o mesmo. Você pode fazer isso configurando o use_referer para true (o padrão é false):

New in version 2.1: A partir da versão 2.1, se o referer for igual à opção login_path, o usuário será redirecionado para default_target_path.

Controlando a URL de redirecionamento dentro do Formulário

Você também pode sobrescrever para onde o usuário será redirecionado, através do próprio formulário incluindo um campo oculto com o nome _target_path. Por exemplo, para redirecionar para a URL definida por rota account, use o seguinte:

Agora, o usuário será redirecionado para o valor do campo oculto do formulário. O valor do atributo pode ser um caminho relativo, uma URL absoluta, ou um nome de rota. Você pode até mesmo alterar o nome do campo oculto do formulário, alterando a opção target_path_parameter para um outro valor.

Redirecionando quando o Login Falhar

Além de redirecionar o usuário após um login bem-sucedido, você também pode definir a URL que o usuário deve ser redirecionado após uma falha de login (por exemplo, quando um nome de usuário ou senha inválida foi submetida). Por padrão, o usuário é redirecionado de volta ao formulário de login. Você pode definir isso para uma URL diferente com a seguinte configuração: