我将Django与Django Rest Framework一起用作网站的后端。禁用注册,并且禁用使用密码登录。用户可以注册和登录的唯一方法是使用Django Social Auth,它将Django令牌交换(在本例中为Discord)社交令牌,并在该过程中创建该用户(如果该电子邮件中不存在该用户)。 / p>
因此在Django中,该用户存在,带有用户名和电子邮件,但没有密码。
这些用户如何登录到管理面板?
答案 0 :(得分:1)
禁用注册,并且禁用使用密码登录。
注册不是创建用户的唯一方法。您可以使用createsuperuser
shell命令创建超级用户。然后,您可以使用它登录管理站点。
现在,问题是是否要允许所有用户管理站点。恕我直言,你不应该。不过,如果您愿意,则可以添加custom auth backend,如下所示:
class CustomBackend(BaseBackend):
def authenticate(self, request, username=None, password=None):
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
return None
check_token = Token.objects.filter(user=user, token=token).exists()
if check_token:
return user
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
并在settings.py
中添加新的后端:
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend', 'path.to.CustomBackend']