Django自定义身份验证后端is_authenticated始终为false

时间:2018-10-18 06:51:21

标签: django authentication login

我正在编写一个应用程序,用户可以在其中输入3种不同的信息: 客户密钥,用户名,密码。 每个customerkey都指向一个单独的数据库。 所以我为此编写了一个customauthbackendend,但是遇到了我无法真正解决的问题。

只要我使用return User.objects.using('505473').get(pk=user_id)将customerkey硬编码到get_user函数中,身份验证就可以正常工作 但是当我不这样做时,我在调用{% if user.is_authenticated %}时总是在模板中得到错误的信息。

当您呼叫{% if user.is_authenticated %} / get_user时,是否可以选择说出他需要呼叫哪个数据库?

customAuthBackend:

class CustomAuthBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        user = User.objects.using(request.POST['customerkey']).get(username=username)
        if user is not None:
            return user
    def get_user(self, user_id):
        try:
            return User.objects.using('505473').get(pk=user_id)
        except User.DoesNotExist:
            return None

0 个答案:

没有答案