Gar*_*day 8 django django-rest-framework json-web-token
我正在使用Django Rest Framework,我已经包含了一个名为REST framework JWT Auth的第三方软件包.当您将用户名/密码发送到某个路由时,它会返回一个令牌.然后需要令牌才能获得某些路由的许可.但是,如何从令牌获取用户名?我查看了整个软件包文档并浏览了StackOverflow.它是一个JSON Web令牌,我假设有一个方法,username = decode_token(token)但我还没有找到这样的方法.
对我来说,这是因为RestFrameworkJWT不再维护。所以我使用了这个rest_framework_simplejw包。
from rest_framework_simplejwt.backends import TokenBackend
token = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1]
data = {'token': token}
try:
valid_data = TokenBackend(algorithm='HS256').decode(token,verify=False)
user = valid_data['user']
request.user = user
except ValidationError as v:
print("validation error", v)
Run Code Online (Sandbox Code Playgroud)
基本上你可以这样做
username = request.user.username
Run Code Online (Sandbox Code Playgroud)
对我来说,使用Django(2.0.1),djangorestframework(3.7.7),djangorestframework-jwt(1.11.0)。
我必须执行以下操作才能从令牌获得回用用户:
token = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1]
print(token)
data = {'token': token}
try:
valid_data = VerifyJSONWebTokenSerializer().validate(data)
user = valid_data['user']
request.user = user
except ValidationError as v:
print("validation error", v)
Run Code Online (Sandbox Code Playgroud)
或者,您可以编写一种中间件,该中间件将根据用户的令牌设置用户。
您可以在此处阅读分步指南:http : //blog.sadafnoor.me/blog/a-django-rest-framework-jwt-middleware-to-support-request-user/
| 归档时间: |
|
| 查看次数: |
6835 次 |
| 最近记录: |