TokenWebLoginGoVue é um projeto que demonstra um sistema de autenticação completo para aplicações web, utilizando Go para o backend e Vue.js para a interface do usuário. O projeto implementa autenticação baseada em tokens, usando JWT (JSON Web Tokens) e PASETO (Platform-Agnostic Security Tokens), permitindo login seguro e gerenciamento de sessões de usuário.
- Autenticação Segura: Autenticação baseada em tokens usando JWT e PASETO.
- Renovação de Tokens: Tokens são renovados automaticamente para garantir sessões seguras e contínuas.
- Inclusão de dados adicionais nos tokens: Incluímos um ID de instância nos exemplos, o que pode ser útil para a gestão de sessões e para cenários de multi-tenancy.
- Logout por Inatividade: Usuários são automaticamente desconectados após um período de inatividade.
- Interface Amigável: Interface de usuário construída com Vue.js para testes de fluxo de login.
- Documentação da API: Documentação clara e acessível usando Swagger para explorar a API de autenticação.
- Backend: Go
- Frontend: Vue.js
- Bibliotecas:
gorilla/mux
para roteamento no Goswaggo/http-swagger
para documentação da APIvue-router
para navegação no Vue.jscrypto-js
para hashing de senhas no frontend
- Node.js (versão 18 ou superior)
- Go (versão 1.21 ou superior)
- Vue CLI
-
Clone o repositório:
git clone https://github.com/seu-usuario/TokenWebLoginGoVue.git cd TokenWebLoginGoVue cd api
-
Instale as dependências:
go mod tidy
-
Execute o servidor Go:
go run main.go
O servidor estará disponível em
http://localhost:8082
.
-
Navegue para o diretório do frontend:
cd ui
-
Instale as dependências do Vue.js:
npm install
-
Execute a aplicação Vue.js:
npm run serve
A aplicação estará disponível em
http://localhost:8080
.
TokenWebLoginGoVue/
│
├── api/ # Go server code
│ ├── main.go # Main entry point of the Go application
│ ├── controller/ # API controllers
│ ├── middleware/ # Authentication middleware
│ ├── data/ # Data repository
│ ├── docs/ # Swagger documentation managed with swaggo
│ └── Dockerfile # Arquivo docker para gerar imagem da api
│
└── ui/ # Vue.js interface code
├── src/
│ ├── components/ # Vue components
│ ├── router/ # Router configuration
│ ├── views/ # Vue pages
│ ├── App.vue # Root component
│ ├── main.js # Vue.js entry file
│ └── config.js # API access configurations and other experiment constants
├── public/ # Static files
└── Dockerfile # Arquivo docker para gerar imagem da ui
- Login: Navegue para
/login
, insira o ID do usuário e a senha para fazer login. - Página Protegida: Acesse
/protected
após login bem-sucedido para visualizar a página protegida. - Renovação Automática: Os tokens são renovados automaticamente enquanto o usuário estiver ativo.
- Logout por Inatividade: O usuário será desconectado após 5 minutos de inatividade.
No diretório principal execute:
docker compose build
docker compose up -d
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests para melhorias e correções.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para dúvidas ou sugestões, entre em contato com [email protected].