Desarrollar una aplicación backend robusta y escalable utilizando Django que integre una interfaz de administrador intuitiva para la gestión eficiente de datos y funcionalidades junto con un REST API completo que facilite la comunicación con las aplicaciones cliente de tal forma que garantice la seguridad, el rendimiento y la extensibilidad del sistema.
Desde la línea de comandos
python -m venv environment
environment\Scripts\activate
Desde la línea de comandos
pip install -r requirements.txt
Abra el proyecto con VSCode, con:
code .
Levante el servidor, con:
python manage.py runserver
Aplique las migraciones
python manage.py makemigrations
python manage.py migrate
Cree el SuperUsuario. Recuerde el usuario y la contraseña para probar el sistema de autenticación.
python manage.py createsuperuser
Levante el servidor, con:
python manage.py runserver
(STOP 1) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/admin
Edite el archivo main/views.py, con:
from django.http import ...
# Importe el decorador login_required
from django.contrib.auth.decorators import login_required
# Restricción de acceso con @login_required
@login_required
def index(request):
...
(STOP 2) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/
Edite el archivo backend/urls.py, con:
...
# Importe las vistas
from django.contrib.auth import views as auth_views
urlpatterns = [
...
# Ruta login/ para la vista LoginView para inicio de sesión, uso de plantilla y alias
path('login/', auth_views.LoginView.as_view(template_name='security/login.html'), name='login'),
# Ruta logout/ para la vista LogoutView para fin de sesión, redirección y alias
path('logout/', auth_views.LogoutView.as_view(next_page='/login/'), name='logout'),
]
Modifique el archivo backend/settings.py, con:
...
# Fallo: acceso sin autenticación
LOGIN_URL = '/login/'
# Éxito: luego de autenticación exitosa
LOGIN_REDIRECT_URL = '/'
(STOP 3) Revise los cambios en el navegador en el URL:
Edite el archivo templates/security/login.html
CSRF
con el token de seguridad único. ...
<!-- Método post y action para el URL (con el alias 'login') -->
<form method="post" action="{% url 'login' %}">
<!-- CSRF token -->
{% csrf_token %}
...
<!-- username -->
<input name="username" ... >
...
<!-- password -->
<input name="password" ... >
...
</form>
(STOP 4) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/
cookie
de sesión
Modifique templates/main/partials/header.html en el bloque logout
CSRF
con el token de seguridad único. <!-- START - Block Logout -->
<!-- Método post y action para el URL (con el alias 'logout') -->
<form method="post" action="{% url 'logout' %}" class="w-full">
<!-- CSRF token -->
{% csrf_token %}
<button ...>
...
</button>
</form>
<!-- END - Block Logout -->
Haga clic en el botón Log out
(STOP 5) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/
Agregue las credenciales y datos generales de un usuario nuevo, con:
(STOP 6) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/
Edite el archivo main/views.py, con:
...
# Importe el decorador login_required
from django.contrib.auth.decorators import login_required, permission_required
# Restricción de acceso con @login_required y permisos con @permission_required
@login_required
@permission_required('main.index_viewer', raise_exception=True)
def index(request):
...
(STOP 7) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/
Modifique el archivo main/models.py, con:
...
# Create your models here.
class MainModel(models.Model):
class Meta:
permissions = [
("index_viewer", "Can show to index view (function-based)"),
]
Aplique las migraciones
python manage.py makemigrations
python manage.py migrate
Levante el servidor, con:
python manage.py runserver
Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/admin
(STOP 1) Revise los cambios en el navegador en el URL: http://127.0.0.1:8000/
En la línea de comandos
pip freeze > requirements.txt
deactivate
Versione local y remotamente.
What are web sessions?
— Fernando 🇮🇹🇨🇭 (@Franc0Fernand0) October 14, 2024
Any data exchange on the web is based on a stateless protocol like HTTP.
Every HTTP request is independent of the previous ones.
However, users need to relate the requests to each other.
For example, they want to stay logged in to a website… pic.twitter.com/YgYjDSihpa
Authentication in REST APIs acts as the crucial gateway, ensuring that solely authorized users or applications gain access to the API's resources.
— Alex Xu (@alexxubyte) December 19, 2023
Some popular authentication methods for REST APIs include:
1. Basic Authentication:
Involves sending a username and password with… pic.twitter.com/Y4CKqZUhBF
Built-in, CSRF, cookies, session, autenticación, autorización