es war 5 Tage strugling mit diesem.Es funktionierte zunächst gut, aber plötzlich fing es an, mir einige Fehler, die ich nicht verstehen konnte, so begann ich meinen Code zu ändern MyCustomUser-Modell und benutzerdefinierte Authentifizierung Backend aber immer noch kann ich dieses Problem nicht.request.user.is_authentifizierte immer wieder anonym in python/django
Ich kann Benutzer anmelden und es meldet sich der Benutzer nach der Anmeldung, aber wenn ich Django-Shell öffnen und testen, ob user.is_authenticated gibt True zurück und user.is_anonymous gibt False zurück.
Kann bitte jemand helfen mir zu identifizieren, was das Problem hier ist. Bitte Kollegen Django-Entwickler.
unten ist mein sign_up Ansicht:
def sign_up(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
new_user = form.save(commit=False)
#create string of first_name an last_name
full_name = '{0} {1}' .format(new_user.first_name, new_user.last_name)
#Slugify full name
new_user.slug = slugify(full_name)
new_user.save()
email = request.POST.get('email')
raw_password = request.POST.get('password1')
#Authenticate the user
user = authenticate(email=email, password=raw_password)
if user is not None :
login(request, user)
if request.user.is_authenticated:
#Redirect to success url after user has successfully is logged in.
return HttpResponseRedirect(reverse_lazy('jogos:question-list'))
else:
form = SignUpForm()
return render(request, 'jogos/sign_up.html', {'form':form})
from jogos.models import MyCustomUser
from django.contrib.auth import get_user_model
Und mein CustomBackend, die ich in meinen Einstellungen auch eingesteckt haben.
class MyCustomBackend(object):
def authenticate(self, request, email=None, password=None, **kwargs):
if email is None:
email = kwargs.get('email')
try:
user = MyCustomUser.objects.get(email=email)
if user.check_password(password):
return user
else:
return None
except MyCustomUser.DoesNotExist:
return None
def get_user(self, user_id):
try:
user = MyCustomUser.objects.get(pk=user_id)
if user.is_active:
return user
except MyCustomUser.DoesNotExist:
return None
Mein CustomUser Modell:
class MyCustomUser(AbstractBaseUser):
email = models.EmailField(max_length=50, verbose_name='email', unique=True)
first_name = models.CharField(max_length=15,blank=False)
last_name = models.CharField(max_length=15,blank=True)
slug = models.SlugField(null=True, unique=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
def get_full_name(self):
full_name = '{0} {1}'.format(self.first_name, self.last_name)
return full_name.strip()
def get_short_name(self):
return self.first_name
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_superuser(self):
return self.is_superuser
@property
def is_staff(self):
return self.is_staff
def __str__(self):
return self.first_name
Und alse Mein Usermanager:
from django.contrib.auth.base_user import BaseUserManager
class UserManager(BaseUserManager):
use_in_migrations = True
def create_user(self, email, password=None):
if not email:
raise ValueError("Users must have an email address")
email = UserManager.normalize_email(email)
user = self.model(email=email)
user.set_password(password)
user.is_active = True
user.save(using=self._db)
return user
def create_superuser(self, email, password):
user = self.create_user(email, password=password)
user.is_active = True
user.is_superuser = True
user.is_admin = True
user.save(using=self._db)
return user
ich kann nicht herausfinden, was hier falsch ist, und das alles Code funktioniert reibungslos und es fing erst an, mir Probleme zu bereiten, als ich meine Codebasis weiter entwickelte
Sehr Dank, ich entfernt haben Diese Zeile aber jetzt Benutzer ist als anonym angemeldet. Bedeutung Authentifizierung fehlgeschlagen. – Silas
Wie überprüfen Sie das? –
Ich überprüfe es auf der Vorlage, die Frageform rendern und überprüfen, ob Benutzer authentifiziert oder anonym ist, bevor der Benutzer eine Frage stellen konnte, gibt es anonym zurück – Silas