Python Django无法登录用户

Python Django无法登录用户,python,django,authentication,Python,Django,Authentication,使用登录视图上的有效凭据验证用户。当打印request.user.is\u authenticated时,它甚至输出True。但在重定向到LOGIN\u REDIRECT\u URL后,请求将返回到LOGIN\u URL,这意味着刚刚经过身份验证的用户不再经过身份验证 关注的项目是一个混合项目,即它使用核心django内置视图、路由和模板以及Djangorest框架 djangorestframework TokenAuthentication到目前为止运行良好,但当我尝试使用核心django视

使用登录视图上的有效凭据验证用户。当打印
request.user.is\u authenticated
时,它甚至输出True。但在重定向到
LOGIN\u REDIRECT\u URL
后,请求将返回到
LOGIN\u URL
,这意味着刚刚经过身份验证的用户不再经过身份验证

关注的项目是一个混合项目,即它使用核心django内置视图、路由和模板以及Djangorest框架

djangorestframework TokenAuthentication到目前为止运行良好,但当我尝试使用核心django视图登录时,我遇到了这种奇怪的情况

我使用的是一个自定义的auth用户模型和两个后端身份验证(它们在api身份验证和授权方面都工作得很好)。项目的其他方面都很好,唯一的问题是认证。我尝试了几种方法来解决这个问题,但都会导致死胡同。我甚至使用了基于函数的视图和django内置的LoginView(作为继承类和路径路由),这与我得到的结果相同

工具
  • Django 3.1.1

  • Python 3.8.4

  • 博士后

  • 波斯特吉斯

  • django restframework 3.11.1

设置.py

已安装的应用程序=[
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.staticfiles”,
“django.contrib.gis”,
#已安装的应用程序和第三方应用程序
]
中间件=[
'django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
“corsheaders.middleware.Corsmidlware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xFrameOptions中间件',
]
AUTH_USER_MODEL='accounts.Account'
PASSWORDLESS_AUTH_BACKEND='accounts.AUTH_backends.PasswordLessAuthenticationBackend'
EMAIL\u AUTHENTICATION\u BACKEND='accounts.auth\u backends.EmailAuthenticationBackend'
身份验证\u后端=(
电子邮件\u身份验证\u后端,无密码\u身份验证\u后端
)
登录\u URL='/admin/'
登录\重定向\ URL='/admin/index'
REST_框架={
“默认\u身份验证\u类”:(
“rest\u framework\u simplejwt.authentication.JWTAuthentication”,
)
}
简单_JWT={
“访问令牌生命周期”:timezone.timedelta(天=1),
“刷新令牌生命周期”:timezone.timedelta(天=2),
“旋转\u刷新\u标记”:False,
“旋转后的黑名单”:True,
'SIGNING_KEY':os.getenv('PROJECT_SECRET_KEY'),
“算法”:“HS256”,
“正在验证密钥”:无,
“观众”:没有,
“发行人”:无,
'AUTH_HEADER_TYPES':('Bearer',),
'USER\u ID\u FIELD':'ID',
“用户ID声明”:“用户ID”,
'AUTH_TOKEN_CLASSES':('rest_framework_simplejwt.tokens.AccessToken',),
...
}
视图.py

类WebAdminLoginView(视图):
“”“处理web管理员登录”“”
def post(自我、请求、*args、**kwargs):
“”“登录经过身份验证的用户帐户。”“”
email,password=request.POST['email'],request.POST['password']
帐户=身份验证(电子邮件=电子邮件,密码=密码)
登录(请求、帐户、后端=设置。电子邮件\u身份验证\u后端)
#下面的代码输出True
打印(request.user.is_认证)#打印序列
返回HttpResponseRedirect(设置.登录\u重定向\u URL)
def get(自我、请求、*args、**kwargs):
返回呈现(请求“admin\u login.html”)
类索引列表(LoginRequiredMixin,ListView):
“”“返回所有已验证合作伙伴的列表”“”
模型=用户
上下文\对象\名称='用户'
template_name='jadminapp/index/list_users.html'
url.py

索引模式=[
路径(…),
....
]
URL模式=[
路径(
'',
core_view.WebAdminLoginView.as_view(),
name='web-admin-login'
),
路径(
"索引",,
包括(
(索引模式,“索引”),
namespace='index'
)
),
]

这已被修复。我使用django提供的ModelBackend代替我的电子邮件\u身份验证\u后端,因为电子邮件在我的自定义模型上设置为我的用户名\u字段。我的项目结构相同,并且面临相同的问题。我有三个后端。请帮助我,Django 3.1是否存在任何问题?如果您的结构与我的相同(即电子邮件在您的用户模型中设置为USERNAME_字段),我纠正此问题的方法是,在settings.py中包括身份验证_后端