如何使用Python为Web服务设置基于令牌的认证?

4 投票
2 回答
2126 浏览
提问于 2025-04-16 14:50

我对网页认证、Python和Django还比较陌生。现在我需要为每个用户设置基于令牌的认证,用于RESTful服务,但我不知道从哪里开始。任何建议都会非常感谢。

2 个回答

2

有一个叫做 django-tokenapi 的包。它的主页和说明文档看起来信息很丰富。你有没有去看看?如果看过的话,请具体说明一下你尝试了什么,以及遇到了什么问题。

需要注意的是,我对Django不是很熟悉,所以可能帮不了你太多。

2

我做过类似的事情,每个用户都有自己独特的令牌。我创建了一个用户档案来存储这个令牌:

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    token = models.CharField(max_length=100, blank=True)

这个想法是按照文档中的说明登录一个Django用户。一旦用户成功登录,就创建或更新用户档案来存储令牌,这个令牌是通过调用一个认证的网络服务(WS)或者其他返回唯一令牌的网络服务获得的。

在当前用户认证期间,你应该能够使用存储的令牌去调用其他网络服务。

在你的 settings.py 文件中:

AUTH_PROFILE_MODULE = 'userprofiles.userprofile'

从视图代码来看,大致是这样的:

request.user.get_profile().token

撰写回答