Pregunta

Estoy usando la integración de MongoDB MongoEngine. Proporciona soporte de autenticación y sesión que una configuración estándar pymongo carecería.

En auth Django regular, se considera mala práctica de extender el modelo del usuario ya que no hay ninguna garantía de que será utilizado correctamente en todas partes. Es este el caso con mongoengine.django.auth?

Si es considera una mala práctica, ¿cuál es la mejor manera de unir un perfil de usuario diferente? Django tiene mecanismos para especificar un AUTH_PROFILE_MODULE. Es esta soportado en MongoEngine así, o debería estar haciendo manualmente las operaciones de búsqueda?

¿Fue útil?

Otros consejos

Sólo ampliada la clase de usuario.

class User(MongoEngineUser):
    def __eq__(self, other):
        if type(other) is User:
            return other.id == self.id
        return False

    def __ne__(self, other):
        return not self.__eq__(other)

    def create_profile(self, *args, **kwargs):
        profile = Profile(user=self, *args, **kwargs)
        return profile

    def get_profile(self):
        try:
            profile = Profile.objects.get(user=self)
        except DoesNotExist:
            profile = Profile(user=self)
            profile.save()
        return profile

    def get_str_id(self):
        return str(self.id)

    @classmethod
    def create_user(cls, username, password, email=None):
        """Create (and save) a new user with the given username, password and
email address.
"""
        now = datetime.datetime.now()

        # Normalize the address by lowercasing the domain part of the email
        # address.
        # Not sure why we'r allowing null email when its not allowed in django
        if email is not None:
            try:
                email_name, domain_part = email.strip().split('@', 1)
            except ValueError:
                pass
            else:
                email = '@'.join([email_name, domain_part.lower()])

        user = User(username=username, email=email, date_joined=now)
        user.set_password(password)
        user.save()
        return user

En Django 1.5 ahora se puede utilizar un objeto configurable por el usuario, por lo que es una gran razón para no usar un objeto separado y yo creo que es seguro decir que ya no se considera una mala práctica de extender el modelo de usuario si está en Django <1,5 pero esperando a actualizar en algún momento. En Django 1.5, el objeto de usuario configurable está configurado con:

AUTH_USER_MODEL = 'myapp.MyUser'

en su settings.py. Si va a cambiar de una configuración de usuario anterior, hay cambios que la recolección de impacto de nombres, etc. Si no desea actualizar a 1.5 por el momento, se puede extender el objeto usuario, por ahora, y luego actualizarlo más tarde cuando lo hace actualizar a 1.5.

https://docs.djangoproject.com/en / dev / temas / auth / auth #-aduana-usuario

N.B. No he probado personalmente esto en Django 1.5 w / MongoEngine, pero se espera que debería apoyarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top