Cómo crear una autenticación de inicio de sesión del cliente como la autenticación de inicio de sesión de Django

Hola

Puedes personalizar muy bien el sistema de autenticación. Siga los siguientes pasos:

Pasos:

  1. Cree su propia tabla de usuario como … y agréguela al archivo models.py de su aplicación.

clase UserData (models.Model):
“” ”
Esta clase guarda la identificación del usuario junto con la Dirección
“” ”

userid = models.CharField (max_length = 10, primary_key = True)
username = models.CharField (max_length = 50)

  1. Por defecto, Django autentica al usuario utilizando el método de autenticación de

django.contrib.auth.authenticate

Como tiene su propia tabla UserData, puede anular la forma en que django autentica al usuario creando su propio sistema de autenticación.

Para hacer esto, cree un archivo backends.py en su aplicación y coloque dos métodos de authenticate y get_user .

desde django.contrib.auth.models import User
desde .models import UserData

clase MyBackEnd (objeto):
“” ”
Este es el back-end personalizado para autenticar al usuario en la base de datos.
si esta autenticación es válida, se llamará a la autenticación predeterminada de django
“” ”

autenticar def (self, userid, contraseña = Ninguno):
“” ”
: param username: nombre de usuario del usuario
: contraseña param: contraseña del usuario
:regreso:
“” ”
#check is user is present in User DB.
existente_usuario = User.objects.get (nombre de usuario = userid)
si no existe user_user:
# Comprobación del usuario UserData Custom DB.
user_data = UserData.objects.get (userid = userid)
print (“…% s …”% user_data)
if userid == user_data.userid:
user = User.objects.create_user (nombre de usuario = userid, contraseña = 12345)
user.save ()
usuario de retorno
más:
regresar Ninguno
más:
return existente_usuario

def get_user (self, user_id):
tratar:
volver User.objects.get (username = user_id)
excepto User.DoesNotExist:
regresar Ninguno

Ahora haga la siguiente entrada en el archivo settings.py

DEPURACIÓN = Verdadero

ALLOWED_HOSTS = []

AUTHENTICATION_BACKENDS = (‘loadmap.backends.MyBackEnd’, ‘django.contrib.auth.backends.ModelBackend’)

# Definición de aplicación

Ponga ambos backends, django intenta autenticarse desde el segundo backend si falla desde el primero.

Haga la siguiente entrada en el archivo urls.py su aplicación

de django.conf.urls url de importación
desde django.contrib.auth importa vistas como auth_views

desde . importar vistas

app_name = ‘loadmap’

urlpatterns = [url (‘login / $’, auth_views.login, name = ‘login’),
… ..]

Simplemente asigne la URL a las vistas de autenticación de inicio de sesión, esto registration/login.html página de registration/login.html predeterminada. Cree la carpeta de registro en su aplicación y pegue el siguiente código en el archivo login.html

{% extiende “admin / base.html”%}

{% contenido de bloque%}

{% if form.errors%}

Su nombre de usuario y contraseña no coinciden. Por favor intente nuevamente.

{% terminara si %}

{% si el siguiente%}
{% if user.is_authenticated%}

Su cuenta no tiene acceso a esta página. Para proceder,
inicie sesión con una cuenta que tenga acceso.

{% else%}

Inicie sesión para ver esta página.

{% terminara si %}
{% terminara si %}

{% csrf_token%}

{{form.username.label_tag}} {{form.username}}
{{form.password.label_tag}} {{form.password}}

{# Asume que configuró la vista de restablecimiento de contraseña en su URLconf #}

¿Olvidó su contraseña?

{% endblock%}

Pegue el siguiente código en views.py

de django.shortcuts import render
desde .models import UserData
de django.contrib.auth.decorators import login_required
desde django.contrib.auth importar autenticar, iniciar sesión, cerrar sesión

def show_map (solicitud):
“” ”
:regreso:
“” ”
usuario = autenticar (userid = request.POST.get (‘nombre de usuario’))
si el usuario no es None y user.is_active:
inicio de sesión (solicitud, usuario)
return render (solicitud, ‘loadmap / loadmap.html’)
más:
return HttpResponse (‘Error’)

Espero que hayas encontrado tu solución.

Nota: Por favor, cuide la sangría ya que se rompe al copiar y pegar desde mi editor. Aunque he tratado de sangrarlo con un espacio.

Debes buscar los paquetes de autenticación y registro de usuario de google django. Hay muchas buenas soluciones de terceros para el registro y autenticación de usuarios en sistemas basados ​​en django. también puede probar django shop, que es una nueva y buena solución de shpopping para django / django cms.