Django 休息框架、JWT 和 request.session
Django rest framework, JWT and request.session
我使用带有 JWT 的 Django rest 框架进行身份验证,一切正常,但是...
我需要在登录时在会话变量中保存有关用户的信息,我真的不知道我可以在哪里做 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
}
但是不行...
有什么想法吗?
request.session
通过 Django's session framework 进行管理,这需要使用会话 cookie,并且是 SessionAuthentication
.
的动力
JWT 完全独立于会话身份验证,并且不提供在令牌上存储任意数据的方法。
试试这个
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 发生变化的结果。
我使用带有 JWT 的 Django rest 框架进行身份验证,一切正常,但是... 我需要在登录时在会话变量中保存有关用户的信息,我真的不知道我可以在哪里做 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
}
但是不行...
有什么想法吗?
request.session
通过 Django's session framework 进行管理,这需要使用会话 cookie,并且是 SessionAuthentication
.
JWT 完全独立于会话身份验证,并且不提供在令牌上存储任意数据的方法。
试试这个
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 发生变化的结果。