Autenticação e autorização: quem você é e o que tem permissão
Separação
Autenticação responde quem é o usuário. Autorização responde se ele tem permissão de executar a ação no recurso. Esconder um botão na interface não é autorização — qualquer requisição pode ser enviada diretamente.
A regra: toda rota verifica a autorização no recurso concreto, não só que o usuário está logado.
Modelos práticos
Por papéis — simples, suficiente para a maioria dos sistemas. Por propriedade e pertencimento — necessário quando usuários veem só os dados da própria organização. Por política detalhada — poderoso e caro de manter, e só quando realmente necessário.
Comece simples e documente as regras em um único lugar no código, não espalhadas em vinte verificações.
Tokens
Expiração curta para um token de acesso, um token de renovação que possa ser revogado, e uma lista de negação para eventos de logout. Guarde no servidor o suficiente para revogar o acesso imediatamente — uma capacidade necessária exatamente no dia em que não há tempo para construí-la.
Indo mais fundo
O perigo mais comum é o acesso direto a um recurso por identificador: trocar um número no endereço que retorna dados de outro. Verifique isso sistematicamente em toda rota que recebe um identificador, e adicione um teste automático que tenta acessar entre usuários.