如何在Django中保存并通过请求对象传递令牌?

时间:2017-03-09 21:07:24

标签: django middleware

所以我试图对基于令牌的身份验证微服务进行身份验证。

我知道这不太理想,但我刚开始编写这个快速的中间件。

middleware.py

def process_request(self, request):
    if request.token = None:
        pass
    else:
        username = validate_token(request.token)
        request.username = username

views.py

def login(request):
    form = LoginForm()

    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            my_token = authservice_login(user,pass)
            request.token = my_token

我的问题是,一旦有人登录并返回令牌,我如何在所有请求之间保持此令牌持久?我想我对Django请求对象有点模糊。如果我登录然后转到调用其他视图的其他页面,我是否仍然可以访问我在登录期间创建的request.token?

我认为我理想的是在登录后,通过中间件将此令牌传递给所有请求?

1 个答案:

答案 0 :(得分:0)

这取决于您希望实现的效果。如果您不太关心遵循REST原则,可以使用sessions存储有关用户登录的信息或与该用户关联的任何其他数据。

但是Django有user对象和 django.contrib.auth 模块,它为你做了很多身份验证工作。您通常不需要保持令牌持久,因为用户对象本身就是持久的。

令牌通常与REST API一起使用,并由客户端通过安全连接发送每个请求。