• Sistemas Web
  • Autenticação

Autenticação

Logout

Assim como o login, o app 'django.contrib.auth' já possui uma url e view para fazer o logout. Para utilizá-la, devemos fazer uma requisição POST. Como vimos anteriormente, podemos fazer um POST usando um formulário.

Exercício 1

Ao lado do nome do usuário, no template base, adicione o seguinte formulário:

<form action="{% url 'logout' %}" method="post">
  <button type="submit">Sair</button>
</form>

Recarregue a página e aperte o botão para sair. É esperado que ocorra um erro.

Exercício 2

Nós já aprendemos a corrigir esse erro. Ele está relacionado ao ataque CSRF. Adicione o token CSRF para corrigir o erro e tente fazer o logout novamente.

Agora o logout deve funcionar, mas você deve ter sido redirecionado para uma página como esta:

Página de logout padrão

Assim como para o login, também é possível configurar a URL de redirecionamento após o logout com a configuração LOGOUT_REDIRECT_URL.

Exercício 3

Adicione a configuração abaixo depois da linha do redirecionamento do login:

LOGOUT_REDIRECT_URL = '/'

Teste o fluxo completo novamente: faça o login e depois o logout. Você deve ser redirecionado automaticamente para a página principal.

Agora veremos como forçar a obrigatoriedade do login em uma determinada view.