Skip to content

Harold875/drf-jwt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Resumen del proyecto

Este proyecto es una API REST con autenticación basada en JWT (JSON Web Token). Desarrollada con Django REST Framework.

El proyecto permite registrar usuarios mediante una solicitud POST, retornando un token si los datos proporcionados en el JSON son válidos. Ademas tiene una ruta de "login/" para poder obtener nuevamente el token si las credenciales (en este caso, username y password) son correctos. Dicho token se utiliza para acceder a rutas protegidas como "profile/".

Indice:

Explicacion del proyecto

Para poder iteracturar con el proyecto se necesita una herramienta como Postman, Thunder client (extension de VsCode), etc.

Registrar usuarios

Lo primero es crear un usuario, para eso se utiliza el metodo POST en la ruta "http://127.0.0.1:8000/register/"

Se envia un JSON con la informacion para registrar un usuario de la siguiente manera:

{
    "username": "usuario",
    "password": "test123",
    "email": "example@example.com"
}

Luego dara la siguiente Respuesta:

Status Code: 201 Created

{
    "token": "930ebe56865465c20f1c044e4c5d92ca49b47306",
    "user": {
        "id": 6,
        "username": "usuario",
        "email": "example@example.com",
        "password": "test123"
    }
}

y de esa forma se pueden crear usuarios.

Ejemplo con Postman:

Capture register Postman

Obtener el token (login)

Para obtener el token, se utiliza el metodo POST en la ruta "http://127.0.0.1:8000/login/"

Se envia en el body, un json son la informacion de un usuario registrado(en este caso se esta validado con el username y el password)

JSON enviado:

{
    "username": "usuario",
    "password": "test123"
}

Respuesta:

Status Code: 200 Ok

{
    "token": "930ebe56865465c20f1c044e4c5d92ca49b47306",
    "user": {
        "id": 6,
        "username": "usuario",
        "email": "example@example.com",
        "password": "pbkdf2_sha256$1000000$zeTysVUtZoYfHFyJfwpC4F$nft+OogeakDcNPTCqZnBsmjRdJjf4hRDDJGHqE7fcl8="
    }
}

Ejemplo con Postman:

Capture login Postman

Acceder a rutas protegidas

Para acceder a rutas protegidas, se tiene que colocar el token obtenido desde "login/" en las cabeceras (Headers) de la siguiente forma:

key                         value
Authorization               Token 930ebe56865465c20f1c044e4c5d92ca49b47306

Entonces, se envia el token del usuario en las cabeceras (headers) a la siguiente url: "http://127.0.0.1:8000/profile/"

Headers:

key                         value
Authorization               Token 930ebe56865465c20f1c044e4c5d92ca49b47306

Respuesta:

Status Code: 200 Ok

{
    "id": 6,
    "username": "usuario",
    "email": "example@example.com",
    "password": "pbkdf2_sha256$1000000$zeTysVUtZoYfHFyJfwpC4F$nft+OogeakDcNPTCqZnBsmjRdJjf4hRDDJGHqE7fcl8="
}

Ejemplo con Postman:

Capture profile Postman

Mensajes de error en Rutas protegidas

  • Si no se proporciona el token

    {
        "detail": "Authentication credentials were not provided."
    }
  • Si se proporciona un token no valido

    {
        "detail": "Invalid token."
    }

Instalacion

Instalacion con Docker

Requisitos:

  • Tener Docker desktop instalado, y poder ejecutar docker compose.
git clone https://github.com/Harold875/drf-jwt.git

cd drf-jwt/

Luego

docker compose up

y ya estaria funcionando el proyecto en el "http://127.0.0.1:8000/" o "http://localhost:8000/"

Instalacion con ambiente virtual

Requisitos:

  • Tener venv
  • Tener python 3.12+

Clonar el repositorio

git clone https://github.com/Harold875/drf-jwt.git

cd drf-jwt/

Activar ambiente virtual

python3 -m venv venv

source venv/bin/activate

Instalar dependencias

pip install -r requirements.txt

Aplicar migraciones e iniciar el servidor de desarrollo

python manage.py migrate

python manage.py runserver

y con esto ya estaria funcionando el proyecto en el "http://127.0.0.1:8000/" o "http://localhost:8000/"

About

API REST con autenticación JWT (JSON Web Token)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors