我使用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
}
但它不起作用......
有什么想法吗?
答案 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发生变化的结果。