我有一个Django应用,可以在python-3.6 / Django-1.11上正常工作
我正在尝试使其在python-3.7上运行,这意味着移至Django-2.x,所以我选择了Django-2.1
我遇到的第一个问题-很可能与我的观点无关-是
MIDDLEWARE_CLASSES
重命名为MIDDLEWARE
,然后django.contrib.auth.middleware.SessionAuthenticationMiddleware
已弃用与适用于3.6 / 1.11组合的代码相比,仅进行了这些更改,我的django服务器就可以很好地启动,但是我无法登录。
我正在使用我的2个自定义后端:
AUTHENTICATION_BACKENDS = (
'plc.plcauthbackend.PlcAuthBackend',
'mfauth.mfbackend.ManifoldBackend',
)
插入我的代码,我发现在尝试登录时:
__init__
)authenticate()
)都不会调用authenticate
我怀疑authenticate
签名的约定有一些变化,但似乎在django的文档中没有任何有关升级到2.x的内容。
这是第一个身份验证类的代码的简化(在我的情况下实际上应该成功)。
<snip>
class PlcAuthBackend:
"""
Authenticate against PLCAPI
"""
def __init__(self, plcapi_url=config_plcapi_url):
print(f"Creating PlcAuthBackend -> {plcapi_url}")
self.plcapi_url = plcapi_url
# Required for your backend to work properly - unchanged in most scenarios
def get_user(self, user_id):
print(f"plc get_user")
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
# This is called by the standard Django login procedure
def authenticate(self, token=None):
print(f"plc authenticate")
if token is None:
return
<snip>
使用此代码,服务器控制台显示“正在创建PlcAuthBackend”消息,但是我没有提到我期望的“ plc authenticate”消息
我欢迎任何有关如何尝试解决此问题的线索。