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.