我正在使用django rest framework jwt身份验证 . 我成功获得令牌并可以向cookie添加令牌 . 但是当我尝试访问需要登录的视图时,JWT身份验证无效 . 始终重定向到login.html .
Http请求标头:
授权:JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjozLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTA1NjU3NDgwLCJlbWFpbCI6ImFkbWluQGdtYWlsLmNvbSJ9.Ro507cIEisRle_iKgH4dm3-tSbrrsaCUYtP2CIK9jLM曲奇:标记= eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjozLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTA1NjU3NDgwLCJlbWFpbCI6ImFkbWluQGdtYWlsLmNvbSJ9.Ro507cIEisRle_iKgH4dm3-tSbrrsaCUYtP2CIK9jLM
class SystemUserView(View):
@method_decorator(login_required)
def get(self, request, user_id):
users = list(User.objects.all().values('email', 'id', 'username'))
return HttpResponse(HttpResponse(json.dumps(users), content_type="application/json"))
网址:
from django.conf.urls import url
from . import views
from .views import SystemUserView, UserAuthenticationView
from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token
urlpatterns = [
url(r'^$', views.index, name="index"),
url(r'^login/?$', UserAuthenticationView.login, name="index"),
url(r'^user/(?P<user_id>[0-9]+)/$', SystemUserView.as_view(), name='user'),
url(r'^api-token-auth/', obtain_jwt_token),
url(r'^api-token-refresh/', refresh_jwt_token),
url(r'^api-token-verify/', verify_jwt_token),
]
Django版本:(1,11,5,'final',0)
Python 3.6.2
1 回答
看起来您正在导入Django视图,而不是DRF APIView . DRF和Django使用不同的身份验证系统 . 如果您使用JWT对DRF进行身份验证,Django Views仍会将您重定向到登录页面 .
以下是使用普通令牌身份验证的DRF视图示例 . 我没有测试它,你必须为JWT进行调整,但它应该引导你走上正确的道路 .
另外,请考虑使用DRF serializer将用户对象转换为json .