REST-FRAMEWORK - GERENCIANDO TEMPO DE EXPIRAÇÃO DE TOKENS

248 views
Skip to first unread message

Marcus Quintela

unread,
May 16, 2016, 7:16:40 PM5/16/16
to Django Brasil
Boa noite, comecei a estudar django rest há duas semanas atrás e gostaria de uma ajuda com a autenticação usando a api rest. 
Estou utilizando o pacote django-rest-auth para fazer a autenticação do usuário na minha API.
Tenho um problema, quando uso o serviço de login ele me retorna os seguintes campos (key, user, datecreate).
Preciso que ele em retorne algo para gerenciar o tempo de validade de meu token na aplicação.

Vi que tinha um pacote bem parecido com o que eu queria e aparentemente mais completo, que é o django-oauth-toolkit.
Mas não entendi muito bem.



Guilherme Medeiros

unread,
May 17, 2016, 12:00:01 AM5/17/16
to django...@googlegroups.com
Marcus.

Nunca usei o plugin que você está usando.

Quanto ao OAUTH você usa nos cenários onde aplicativos terceiros podem conectar-se ao usuário, ou o usuário pode gerar diferentes tokens dependendo do nível de acesso do momento.
Esses tokens quase nunca expiram com o tempo.

Geralmente, quando quero fazer autenticação por token, exatamente como vc está falando, eu uso (e recomendo) o django-rest-framework-jwt.
https://github.com/GetBlimp/django-rest-framework-jwt

JWT vai servir bem como você deseja.
É um token de autenticação, que possui uma parte assinada, informa o tempo de expiração, e permite um conjunto limitado de "refreshes" no token até que o usuário precise logar-se novamente.



--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Marcus Quintela

unread,
May 18, 2016, 12:02:17 PM5/18/16
to Django Brasil
Guilherme, muito obrigado de verdade.
JWT era tudo que eu precisava, mas demorei um pouco a enteder como ele funcionava.
Porém na documentação não fala sobre o endpoint de logout.
Vou ter que pesquisar como implementar isso.

Guilherme Medeiros

unread,
May 18, 2016, 12:19:28 PM5/18/16
to django...@googlegroups.com
Então...
Em JWT não existe logout.
Não existe "oficialmente" forma de invalidar um token, a não ser esperar que ele expire.

Porém, se você realmente precisa do logout, você pode fazer uma gambiarra :D
Você pode criar um "permission class" (https://getblimp.github.io/django-rest-framework-jwt/#usage) que verifica se o usuário está logado.
E ai criar algum tipo de flag ou validador no banco de dados.


Reply all
Reply to author
Forward
0 new messages