es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Django: ¿Cómo puedo restringir el acceso a una URL basándome en el entorno en el que se está ejecutando la aplicación?

Tengo el entorno local y de pruebas que establecí utilizando DJANGOSETTINGSMODULE. Quiero que esta URL solo sea accesible en el entorno de pruebas. ¿Cómo puedo saber si el entorno actual es de pruebas y restringir la URL a él?
Aquí está mi URL:

path("testing_page/", views.testing_page_view, name="testing_page"),

La URL base de pruebas es https://myapp-staging.domain.com/

La vista es:

def testing_page_view(request):
    if request.method == "GET":
        return render(request, "testing_page.html")
    else:
        values = request.POST.dict()
        return HttpResponseRedirect(login_link)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para restringir la URL al entorno de pruebas, puedes verificar la configuración ALLOWED_HOSTS en tu archivo settings.py. Aquí tienes los pasos que puedes seguir:

    1. Abre tu archivo settings.py.
    2. Busca la configuración ALLOWED_HOSTS. Debería ser una lista de cadenas de texto.
    3. Agrega 'myapp-staging.domain.com' a la lista si aún no está allí.
    4. De vuelta en tu función testing_page_view, verifica si el host actual coincide con el host de prueba utilizando request.get_host().
    5. Si el host no coincide, retorna un error 404 o una página de error personalizada.

    Aquí tienes una versión actualizada de tu vista:

    from django.http import Http404
    
    def testing_page_view(request):
        # Verifica si el host actual está permitido
        if request.get_host() != 'myapp-staging.domain.com':
            raise Http404
    
        if request.method == "GET":
            return render(request, "testing_page.html")
        else:
            values = request.POST.dict()
            return HttpResponseRedirect(login_link)
    

    Ahora, la URL testing_page solo será accesible si la configuración ALLOWED_HOSTS incluye myapp-staging.domain.com. Si alguien intenta acceder a la URL desde un host diferente, verá un error 404.

Comments are closed.