Django休息框架,JWT和request.session

时间:2015-05-30 13:20:31

标签: django session session-variables django-rest-framework jwt

我使用Django休息框架和JWT进行身份验证,一切都很完美但是...... 我需要在登录时在会话var中保存有关用户的信息,我真的不知道我可以在哪里执行request.session [' mydata'] = plop

我试过了:

def jwt_response_payload_handler(token, user=None, request=None):
  serializedUser = UserSerializer(user).data
  request.session['mydata'] = serializedUser.mydata
  return {
    'token': token,
    'user': serializedUser
  }

但它不起作用......

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

request.session通过Direct3D Win32 Game Visual Studio template进行管理,需要使用会话Cookie才能使用SessionAuthentication

JWT与会话身份验证完全分开,并且没有提供在令牌上存储任意数据的方法。

答案 1 :(得分:1)

试试这个

def jwt_response_payload_handler(token, user=None, request=None):
    return {
        'token': token,
        'user': UserSerializer(
            user,
            context={
                'request': request
            },
        ).data
    }

您添加到UserSerializer的任何字段都将与令牌一起包含在响应中。

然后,您可以使用该信息将信息与令牌一起存储在localstorage中,以便SPA可以使用它,而无需每次都进行单独的呼叫。

与文档的唯一区别是添加了context={'request': request},,这可能是自JWT文档编写以来DRF发生变化的结果。