Fala @mvrcelo
, ótima pergunta!
A principal necessidade de armazenar os dados do usuário logado no localStorage
surgiu para diminuir as requisições que buscam os dados desse usuário. Hoje são mais de 150k requisições por mês só nesse endpoint /api/v1/user
, mas sem esse cache seriam muito mais.
Como você citou, isso não representa nenhum problema de segurança, pois essa informação só é utilizada para determinar alguns detalhes da interface visual, já que ela é diferente caso o usuário esteja logado ou não. Essas informações nunca são consideradas pelo backend, pois lá só é verificado o cookie de sessão enviado pelo cliente e as permissões atualizadas são buscadas sempre no banco de dados.
A mesma requisição é usada para obter outras informações dos usuários, como os saldos de TabCoins e TabCash mostrados no Header, então essas informações também ficam com um cache local que sempre fica sincronizado entre todas as abas que estiverem abertas no TabNews, ou seja, se você ganhar TabCash por qualificar um conteúdo, todas as abas do TabNews que estiverem abertas no mesmo dispositivo mostrarão o saldo atualizado.
O localStorage
também é utilizado para salvar a preferência de tema (claro ou escuro) e algumas informações temporárias, como rascunhos de conteúdos, flag para mostrar os confetes após a criação de novo conteúdo e o endereço de email do usuário para confirmação durante o processo de cadastro.