Skip to content

jeffersonximeness/jwt-authentication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JWT AUTHENTICATION AND AUTHORIZATION EXAMPLE

JWT (Json Web Token) é um método usado pela indústria para realizar autenticação entre duas partes por meio de um token assinado que autentica uma requisição web.
Comparado com a autenticação baseada em sessão onde é preciso armazenar a sessão no cookie, a vantagem da autenticação por JWT é que o token é armazenado no
client-side (Local Storage).
O intuito desse projeto é mostrar como é feito o fluxo de autenticação e autorização com JWT.

De forma simplificada, a imagem acima mostra como é feito o fluxo de de autenticação via JWT.
1. É enviada uma requisição com usuário e senha para login, após a verificação do back-end, o token é retornado ao front-end e salvo no Local Storage.
2. Após o token ser salvo, deve ser colocado no header para as futuras requisições para autenticar o usuário. A partir dai em toda requisição é verificado o token pelo middleware, e se tudo estiver certo, os dados serão devolvidos ao front-end.

📍 Rotas da API

Endpoit Retorno
/api/auth/signup Registro de usuário
/api/auth/signin Login de usuário
/api/test/user Mostra as informações do usuário
/api/test/all Mostrar os conteúdos públicos
/api/test/admin Mostrar o conteúdo dos admins
/api/test/mod Mostrar o conteúdo dos moderadores

🛠️ Tecnologias

⚙️ Requisitos

🚀 Instalação

$ git clone https://github.com/jeffersonximeness/jwt-authentication.git
$ cd jwt-authentication/

$ docker-compose up -d

💡 Sobre o projeto

O frontend do projeto foi construido com Typescript utilizando React com o framework Bootstrap para estilização, as requisições para a API foram feitas utilizando o Axios.
O backend/API foi construido com Node e o framework express. Para conexão com o banco de dados e consultas foi utilizado o ORM sequelize. Ao registrar um usuário, automaticamente é criado uma 'ROLE_USER' que é o tipo comum de usuário, além desse tipo tem: 'ROLE_MODERATOR' e 'ROLE_ADMIN'.
Cada tipo de usuário pode acessar conteúdos referentes a sua ROLE. A lógica de acesso aos conteúdos é feita pelo frontend.
A infraestrutura da aplicação é feita com Docker, são criados 3 conteiners, um para cada parte da aplicação (banco de dados, backend e frontend). Para orquestrar os conteiners foi utilizado Docker-compose.


A aplicação irá abrir localmente em http://localhost:8081

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published