Galdino
, show de bola meu caro! Seja muito bem vindo nos estudos da plataforma 🤝
No modelo de autorização, há uma função chamada can que valida as permissões dos usuários.
Correto, se trata desta função aqui.
No entanto, essa validação é feita com base em informações armazenadas no LocalStorage, o que pode ser facilmente editável.
A validação não é feita com base em informações armazenadas em LocalStorage
, pois como você especulou, se este fosse o caso, seria facilmente editável.
O que você encontrou no LocalStorage
é um array de features
que são usados pelo frontend
para a interface decidir mostrar ou não alguns recursos (por exemplo, recursos de moderação). Nenhuma destas informações são retornadas para o backend
e o único fluxo neste caso é de mão única do backend
para o frontend
.
Então a confusão na sua avaliação pode ter acontecido porque este é o mesmo array que fica no backend
, mas lá ele não é editável. Então o método authorization#can
é usado apenas no backend
da aplicação e que busca as informações que estão no banco de dados.
O método de autenticação + autorização que usamos é session based e difere de estratégias stateless como o JWT. E como tudo em tecnologia, uma solução não é melhor que a outra, é uma questão de contexto e tradeoff 🤝