15.13. Modelos em Django: Autenticação e Autorização

O Django, uma estrutura de aplicativo da web Python, fornece um sistema de autenticação e autorização integrado que permite aos desenvolvedores criar aplicativos da web seguros e confiáveis. Este capítulo abordará em detalhes esse sistema e como ele pode ser personalizado para atender às necessidades de diferentes projetos.

Autenticação

A autenticação é o processo de verificação da identidade de um usuário. Em outras palavras, é como o sistema determina quem é o usuário. No Django, a autenticação é realizada usando o sistema de autenticação integrado.

O sistema de autenticação do Django fornece um modelo User que representa os usuários do sistema. Este modelo possui campos para armazenar informações como nome de usuário, senha, email, nome e sobrenome. Além disso, o modelo User possui métodos para verificar a senha, alterar a senha e verificar se a conta do usuário está ativa.

Para autenticar um usuário, o Django fornece a função authenticate(). Esta função aceita um nome de usuário e uma senha e retorna um objeto User se a autenticação for bem-sucedida. Caso contrário, retorna None.

Exemplo de autenticação

from django.contrib.auth import authenticate
user = authenticate(username='john', password='secret')
if user is not None:
    # A backend authenticated the credentials
else:
    # No backend authenticated the credentials

Autorização

A autorização é o processo de determinar o que um usuário autenticado tem permissão para fazer. No Django, a autorização é realizada usando o sistema de permissões integrado.

O sistema de permissões do Django fornece uma maneira de definir o que os usuários podem e não podem fazer. As permissões são definidas em termos de modelos e ações. Por exemplo, você pode definir uma permissão que permite a um usuário adicionar, alterar ou excluir instâncias de um modelo específico.

As permissões são armazenadas no modelo Permission, que possui campos para o nome da permissão, o conteúdo do tipo da permissão e o modelo ao qual a permissão se aplica. O modelo User tem um relacionamento muitos para muitos com o modelo Permission, o que significa que um usuário pode ter várias permissões e uma permissão pode ser atribuída a vários usuários.

Exemplo de autorização

from django.contrib.auth.models import User, Permission
from django.contrib.contenttypes.models import ContentType
from myapp.models import BlogPost

content_type = ContentType.objects.get_for_model(BlogPost)
permission = Permission.objects.create(
    codename='can_publish',
    name='Can Publish Posts',
    content_type=content_type,
)
user = User.objects.get(username='john')
user.user_permissions.add(permission)

Além disso, o Django fornece a função has_perm() que verifica se um usuário tem uma permissão específica. Esta função aceita o nome da permissão e retorna True se o usuário tiver a permissão e False caso contrário.

Exemplo de verificação de permissão

if user.has_perm('myapp.can_publish'):
    # The user has the permission
else:
    # The user does not have the permission

Conclusão

O sistema de autenticação e autorização do Django é uma ferramenta poderosa que permite aos desenvolvedores criar aplicativos da web seguros e confiáveis. Com ele, você pode controlar quem tem acesso ao seu aplicativo e o que eles podem fazer. E, graças à flexibilidade do Django, você pode personalizar este sistema para atender às necessidades do seu projeto.

Agora responda o exercício sobre o conteúdo:

Qual é a função do sistema de autenticação e autorização integrado do Django?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Modelos em Django: Testes em Django

Próxima página do Ebook Gratuito:

88Modelos em Django: Testes em Django

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto