Este é um projeto simples que implementa um sistema de login e registro utilizando TypeScript, Mongoose e bcrypt. O objetivo é demonstrar como criar uma API básica para gerenciar usuários, incluindo a criação, autenticação e armazenamento de dados em um banco de dados MongoDB.
- TypeScript: Para garantir um código mais seguro e legível.
- Node.js: Ambiente de execução JavaScript no servidor.
- Express: Framework para construir a API.
- Mongoose: ODM para MongoDB, que facilita a manipulação de dados.
- jsonwebtoken: Para criação e verificação de tokens JWT.
- bcrypt: Para hash de senhas e aumentar a segurança no armazenamento de senhas.
- Registro de novos usuários com hash de senha utilizando bcrypt.
- Login de usuários existentes.
- Colher informações do usuário.
- Proteção de rotas com autenticação JWT.
- Validação de entradas.
- Node.js e npm instalados.
- MongoDB em execução (localmente ou em um serviço de nuvem).
-
Clone o repositório:
git clone https://github.com/rebornrs/auth-easy-typescript.git cd auth-easy-typescript
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente:
Crie um arquivo
.env
na raiz do projeto e adicione as seguintes variáveis:MongoServer = sua_string_de_conexão_do_mongodb SecretOrPrivateKey = sua_chave_secreta
-
Inicie o servidor:
npx nodemon
O servidor estará disponível em http://localhost:3000
.
- POST /api/user/register: Registra um novo usuário com senha protegida por bcrypt.
- POST /api/user/auth: Faz login e retorna um token JWT.
- GET /api/user/info: Rota protegida, requer autenticação. Você deve incluir um Authorization Bearer no cabeçalho da requisição.
curl --location 'http://127.0.0.1:3000/api/user/register' \
--header 'Content-Type: application/json' \
--data '{
"username": "rebornrs",
"password": "password_here"
}'
curl --location 'http://127.0.0.1:3000/api/user/auth' \
--header 'Content-Type: application/json' \
--data '{
"username": "rebornrs",
"password": "password_here"
}'
curl --location 'http://127.0.0.1:3000/api/user/info' \
--header 'Authorization: Bearer seu_token_jwt_aqui'
Sinta-se à vontade para contribuir com melhorias ou correções. Faça um fork do repositório e envie um pull request.