Hola
Puedes personalizar muy bien el sistema de autenticación. Siga los siguientes pasos:
Pasos:
- Cómo analizar el rendimiento del sitio web de WordPress Woocommerce en caso de que la carga del sitio web sea lenta
- ¿Cuándo quedará obsoleto el compilador de JavaScript de Babel?
- ¿Cuáles son los mejores lenguajes de programación para facilitar la integración entre la arquitectura front-end y back-end?
- ¿De qué sirve crear tu propio sitio web?
- WebDeveloper Weekly: ¿en qué contexto, cuándo y cómo uso NoSQL?
- 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)
- 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 #}
{% 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.