Executando verificação de segurança...
2
Carregando publicação patrocinada...
1

Opa, tudo bem?

Fazer um CRUD de usuários não é necessário pois o Django já traz uma abstração completa para realizar o CRUD, tanto de usuários, quanto de grupos e permissões! 😃

Meu problema está relacionado com a identidade e identificação deles, por exemplo: você é o usuário Rodrigo, você consegue fazer posts aqui no TabNews sobre esse nome, mas como você garante que será sempre você que estará fazendo posts aqui e não um impostor? Se sua identidade for roubada, seria possível você provar que a pessoa que roubou não é você?

É aí que entra os métodos de autenticação. Para não precisar você adicionar o email e a senha toda vez que você entrar no site ou toda vez que fizer um post, o servidor cria uma sessão, essa sessão pode ser criada de diferentes formas. Você pode criar uma entrada no banco de dados que identifica seu computador ou celular, você pode criar um token, que é uma espécie de assinatura compartilhada com você e que identifica seus dados, e ainda existem métodos menores, que no final das contas fazem a mesma coisa que os dois citados acima.

Por exemplo, no JWT você gera duas assinaturas, mas cada assinatura tem uma validade por tempo e ação. O token/assinatura de acesso permite que você publique um post no TabNews, mas depois que você faz esse post, por exemplo, esse token deixa de ser válido, então você precisa de um novo token. Mas como você vai fazer isso? Você vai usar a outra assinatura, ou token, o token de atualização. Esse token só pode ser usado uma vez, mas ele dura muito tempo. Para melhor entendimento, imagina que você quer fazer uma compra no nome de outra pessoa, para você fazer uma compra, você precisa da autorização dela, essa autorização pode permitir você fazer múltiplas compras ou apenas uma, mas isso também depende da validade, então a cada x dias esse documento fica inválido e você precisa emitir outro com a ajuda dela.

A questão é justamente essa, um token de atualização também não dura pra sempre, ele precisa ser atualizado, pelo menos a cada vez que um novo token de acesso é emitido, mas se o usuário ficar muito tempo fora da rede social, do website, aí sim nesse caso seria necessário a pessoa fazer uma identificação com email e senha, ele seria desconectado.

Essa é uma forma simplificada de explicar, mas os detalhes de segurança são muito mais extensos do que isso, e existem outros métodos. Por exemplo, a questão de stateless e stateful pode ser explicado ao fato de que um token JWT possui detalhes mais amplos sobre o usuário, para que não seja necessário consultar o banco de dados e sim só decodificar, então ele pode ser qualificado como stateless, por não ser necessário estado... Entre outros detalhes.

2

Para não precisar você adicionar o email e a senha toda vez que você entrar no site ou toda vez que fizer um post

O browser armazena tokens.
Alguns até na localstorage

Alguns em outras camadas.

Dá pro dev definir eles ou alguma ferramenta define eles

O django relciona determinado token com determinado user (no db)
Se fizer em python sem Django também funciona
E em outras camados do server tbm

1