为什么我无法使用有效凭据登录到 Django 用户,但可以登录到我原来的超级用户?

我的 django 项目中有这个问题,用户在创建帐户后无法登录。用户凭据是正确的,所以一切都应该正常工作,但我想我在构建我的客户用户模型时忘记了正确连接某些东西。

查看我的管理页面,我在数据库中看到了用户。尝试调试错误时,我也无法登录帐户的超级用户版本(更改超级用户 = True)。我添加了一些我在网上找到的建议,例如

SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False

SESSION_ENGINE = 'django.contrib.sessions.backends.db'

在我的设置中,但仍然没有成功。我只能登录我创建的原始超级用户。

代码如下:

models.py

class CustomAccountManager(BaseUserManager):

    def create_superuser(self, email, user_name, first_name, last_name, password, **other_fields):

        other_fields.setdefault('is_staff', True)
        other_fields.setdefault('is_superuser', True)
        other_fields.setdefault('is_active', True)

        if other_fields.get('is_staff') is not True:
            raise ValueError(
                'Superuser must be assigned to is_staff=True.')
        if other_fields.get('is_superuser') is not True:
            raise ValueError(
                'Superuser must be assigned to is_superuser=True.')

        return self.create_user(email, user_name, first_name, last_name, password, **other_fields)

    def create_user(self, email, user_name, first_name, last_name, password, **other_fields):

        if not email:
            raise ValueError(_('You must provide an email address'))

        if not user_name:
            raise ValueError(_('You must provide a username'))

        if not first_name:
            raise ValueError(_('You must provide your first name'))

        if not last_name:
            raise ValueError(_('You must provide your last name'))
        
        if not password:
            raise ValueError(_('You must provide your last name'))

        email = self.normalize_email(email)
        user = self.model(email=email, user_name=user_name,
                          first_name=first_name, last_name=last_name, password=password, **other_fields)
        user.set_password(password)
        user.save()
        return user


class NewUser(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(_('email address'), unique=True)
    user_name = models.CharField(max_length=150, unique=True)
    first_name = models.CharField(max_length=150, blank=True)
    last_name = models.CharField(max_length=150, blank=True)
    start_date = models.DateTimeField(default=timezone.now)
    #subscribed = models.BooleanField(default=None)
    is_active = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)

    objects = CustomAccountManager()


    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['user_name', 'first_name', 'last_name']

    def __str__(self):
        return self.user_name

网址.py

    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    path('api/', include('bucket_api.urls', namespace='bucket_api')),

正如您所看到的,我正在尝试登录默认的 REST 框架 url 和我的管理面板页面,除了我原来的超级用户之外,问题仍然存在。我不认为这是迁移问题,因为没有任何要迁移的更改。

这是 GET 错误 = "GET /api/ HTTP/1.1" 403 4997

感谢@meet,我使用他推荐的修复程序解决了这个问题。我还必须添加到我的settings.py

rest_framework.authentication.SessionAuthentication

像这样:

    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )

做这两个修复解决了我的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么通过我自己的视图登录后,用户登录到管理站点但未登录我的视图?Django的

无法在Django单元测试中登录到admin,但可以在dev服务器中登录?

如何使用我在此面板中创建的用户登录到 Django 管理面板?扩展了用户模型

为什么我的用户无法登录到 Azure 门户?

为什么Windows 8.x的用户无法登录到我们的域?

我无法使用su命令以root用户身份登录,但可以使用SSH登录

无法登录到我刚刚使用useradd创建的用户

无法使用有效的用户名和密码登录django管理页面

无法使用有效的用户名和密码登录django管理页面

无法使用自定义用户和Mezzanine / South登录到Django Admin

无法从用户上传图片,但可以从Django中的管理员上传

django:使用context_processor.request时,我无法登录到管理员

Django 自定义用户模型,无法登录到 Django 管理面板

无法登录到我的Microsoft帐户

django-无法使用用户凭据登录

如何在Azure AD中批量创建/导入用户,以便所有用户都可以单点登录到我的SF沙箱?

创建无法登录但可以使用FTP的Windows用户?

如何获取登录到我的ASP.NET MVC网站的当前用户的名称?

JS | 从通过Facebook登录到我的网站的用户获取朋友的名字

自动将FB应用程序用户登录到我的网站

无法登录到根用户

如何使用我的AAD凭据登录到我的Azure VM?

登录到Oracle Enterprise Manager时,再次要求我提供凭据。为什么?

为什么我无法使用从 ASP.Net 代码执行的 Power Shell 命令登录到 Azure?

为什么我无法使用curl -d选项登录到路由器?

无法使用提供的凭据登录django DRF

Django人员登录到所有URL

使用自定义用户模型成功创建超级用户后无法登录django admin

如何允许拥有自己的备用帐户/公司的用户登录到我的应用中的备用帐户