13.9. Criação de um projeto Django: Autenticação de usuários
Página 67 | Ouça em áudio
A autenticação de usuários é um aspecto crucial para qualquer aplicação web que deseja proteger certos recursos e permitir o acesso apenas a usuários autorizados. No Django, a autenticação de usuários é facilitada pela sua biblioteca de autenticação incorporada. Nesta seção, vamos explorar como criar um projeto Django que inclui autenticação de usuários.
Para começar, precisamos primeiro instalar o Django. Isso pode ser feito usando o pip, o instalador de pacotes Python. No terminal, basta executar o comando 'pip install django'. Uma vez instalado, podemos criar um novo projeto Django executando 'django-admin startproject myproject'.
Uma vez criado o projeto, precisamos criar uma nova aplicação para lidar com a autenticação de usuários. Isso pode ser feito executando 'python manage.py startapp authentication' na raiz do projeto. Isso criará uma nova pasta chamada 'authentication' com vários arquivos que serão usados para configurar a aplicação de autenticação.
Em seguida, precisamos adicionar a nova aplicação à lista de INSTALLED_APPS em settings.py. Isso permitirá que o Django reconheça a aplicação de autenticação e inclua suas funcionalidades no projeto. A lista de INSTALLED_APPS deve agora incluir 'authentication'.
Em seguida, precisamos configurar a autenticação de usuários. O Django vem com um sistema de autenticação incorporado que podemos utilizar. Para isso, precisamos adicionar a seguinte linha ao arquivo settings.py: 'AUTH_USER_MODEL = 'authentication.User'.
Isso informa ao Django para usar o modelo de usuário definido na aplicação de autenticação para todas as operações de autenticação. Agora precisamos criar esse modelo de usuário. Em models.py na aplicação de autenticação, adicione o seguinte código:
from django.contrib.auth.models import AbstractUser class User(AbstractUser): pass
Isso cria um modelo de usuário que herda de AbstractUser, um modelo de usuário base que inclui campos como username, password, email, first_name, last_name, etc. Podemos adicionar campos adicionais se necessário, mas para este exemplo, vamos manter as coisas simples.
Agora, precisamos criar as views para lidar com o login e o logout. Em views.py na aplicação de autenticação, adicione o seguinte código:
from django.contrib.auth import authenticate, login, logout from django.http import HttpResponse from django.shortcuts import render, redirect def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') else: return HttpResponse('Invalid credentials') else: return render(request, 'authentication/login.html') def logout_view(request): logout(request) return redirect('login')
Estas views lidam com o login e o logout, respectivamente. A view de login verifica se o método de requisição é POST. Se for, tenta autenticar o usuário com o username e password fornecidos. Se a autenticação for bem-sucedida, o usuário é logado e redirecionado para a página inicial. Se a autenticação falhar, uma resposta HTTP com a mensagem 'Invalid credentials' é retornada. Se o método de requisição não for POST, a página de login é renderizada.
A view de logout simplesmente faz logout do usuário e redireciona para a página de login.
Agora, precisamos criar as templates para o login. Crie uma nova pasta chamada 'templates' na pasta da aplicação de autenticação e, dentro dela, crie uma nova pasta chamada 'authentication'. Dentro desta pasta, crie um novo arquivo chamado 'login.html' e adicione o seguinte código:
{% extends 'base_generic.html' %} {% block content %}{% endblock %}Login
Esta é uma template simples de login que estende a template base_generic.html e substitui o bloco de conteúdo com um formulário de login.
Finalmente, precisamos adicionar as URLs para as views de login e logout. Em urls.py na aplicação de autenticação, adicione o seguinte código:
from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), path('logout/', views.logout_view, name='logout'), ]
Isso adiciona as URLs para as views de login e logout, respectivamente. Agora, se executarmos o servidor de desenvolvimento Django com 'python manage.py runserver' e navegarmos para 'http://localhost:8000/login', deveríamos ver a página de login e ser capazes de logar com um usuário existente.
Em resumo, a autenticação de usuários é uma parte importante de qualquer aplicação web e o Django facilita a implementação dessa funcionalidade. Com o sistema de autenticação incorporado do Django, podemos facilmente proteger recursos e permitir o acesso apenas a usuários autorizados.
Agora responda o exercício sobre o conteúdo:
Qual é o processo para configurar a autenticação de usuários em um projeto Django?
Você acertou! Parabéns, agora siga para a próxima página
Você errou! Tente novamente.
Próxima página do Ebook Gratuito: