如何使用远程数据库中的令牌进行身份验证?

问题描述

我有一个 REST API,它使用 2 个 postgresql 数据库:db1(认)和 db2(远程,只读)。我想从 db2 获取用户并为他们创建一个配置文件以存储在 db1 中。定制的 User 和 MyToken 模型位于 db2 中。是否可以让用户使用来自 db2 的令牌进行身份验证?当我在视图中使用获取授权令牌时,它会在 db1 中创建一个名为 Token 的新表。

自定义令牌的模型是这样的:

class MyToken(models.Model):
key = models.CharField(primary_key=True,max_length=40)
created = models.DateTimeField()
user = models.ForeignKey(User,models.DO_nothing)
new_workespace = models.ForeignKey(NewWorkspace,models.DO_nothing)

class Meta:
    managed = False
    db_table = 'users_mytoken'
    unique_together = (('user','new_workespace'),)

这是我用于令牌身份验证的序列化程序。我怎样才能重写它以获得上面的令牌?

class AuthTokenSerializer(serializers.Serializer):
"""Serializer for the user authentication object"""
email = serializers.CharField()
password = serializers.CharField(
    style={'input_type': 'password'},trim_whitespace=False
)

def validate(self,attrs):
    """Validate and authenticate the user"""
    email = attrs.get('email')
    password = attrs.get('password')

    user = authenticate(
        request=self.context.get('request'),username=email,password=password,)
    if not user:
        msg = _('Unable to authenticate with provided credentials')
        raise serializers.ValidationError(msg,code='authentication')

    attrs['user'] = user
    return attrs

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)