Skip to content

This repository provides a comprehensive example of a web authentication system using Go for backend API development and Vue.js for the frontend user interface. It features token-based authentication with both JWT and PASETO, showcasing secure login and logout functionalities.

License

Notifications You must be signed in to change notification settings

JunioCesarFerreira/TokenWebLoginGoVue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TokenWebLoginGoVue

🌍 PortuguêsEnglish

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.

Funcionalidades

  • 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.

Tecnologias Utilizadas

  • Backend: Go
  • Frontend: Vue.js
  • Bibliotecas:
    • gorilla/mux para roteamento no Go
    • swaggo/http-swagger para documentação da API
    • vue-router para navegação no Vue.js
    • crypto-js para hashing de senhas no frontend

Requisitos

  • Node.js (versão 18 ou superior)
  • Go (versão 1.21 ou superior)
  • Vue CLI

Configuração e Execução

Backend (Go)

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/TokenWebLoginGoVue.git
    cd TokenWebLoginGoVue
    cd api
  2. Instale as dependências:

    go mod tidy
  3. Execute o servidor Go:

    go run main.go

    O servidor estará disponível em http://localhost:8082.

Frontend (Vue.js)

  1. Navegue para o diretório do frontend:

    cd ui
  2. Instale as dependências do Vue.js:

    npm install
  3. Execute a aplicação Vue.js:

    npm run serve

    A aplicação estará disponível em http://localhost:8080.

Estrutura do Projeto

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

Como Usar

  1. Login: Navegue para /login, insira o ID do usuário e a senha para fazer login.
  2. Página Protegida: Acesse /protected após login bem-sucedido para visualizar a página protegida.
  3. Renovação Automática: Os tokens são renovados automaticamente enquanto o usuário estiver ativo.
  4. Logout por Inatividade: O usuário será desconectado após 5 minutos de inatividade.

Utilizando Docker

No diretório principal execute:

docker compose build
docker compose up -d

Notas

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests para melhorias e correções.

Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Contato

Para dúvidas ou sugestões, entre em contato com [email protected].

About

This repository provides a comprehensive example of a web authentication system using Go for backend API development and Vue.js for the frontend user interface. It features token-based authentication with both JWT and PASETO, showcasing secure login and logout functionalities.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published