【发布时间】:2019-05-09 23:40:09
【问题描述】:
我使用了令牌身份验证,它工作正常,即它正在对用户进行身份验证,然后用户登录。但在我看来,我已将其中一个视图的权限类设置为 IsAuthenticated,但事实并非如此即使他是经过身份验证的用户,也允许用户。 下面是显示我已登录 (jadhav@gmail.com) 的屏幕截图:
下一个标签显示“未提供身份验证详细信息”:
谁能告诉我怎么了? 好的,我提供详细信息: 这些是我的设置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated', )
}
这就是我的身份验证方式:
类 UserLoginAPIView(APIView):
permission_classes = [AllowAny]
serializer_class = UserLoginSerializer
def post(self, request, *args, **kwargs):
data = request.data
serializer = UserLoginSerializer(data=data)
if serializer.is_valid(raise_exception=True):
# new_data = serializer.data
if serializer.data:
user = authenticate(username=request.data['username'], password=request.data['password'])
login(request, user)
print("IsAuthenticated", user.is_authenticated)
token, _ = Token.objects.get_or_create(user=user)
return Response({'token': token.key},
status=HTTP_200_OK)
我设置限制的另一个视图:
类 BoardCreateAPIView(CreateAPIView):
queryset = Boards.objects.all()
serializer_class = BoardCreateSerializer
permission_classes = (IsAuthenticated,)
【问题讨论】:
-
我认为内置的 api 文档不允许发帖?我可能是错的。检查浏览器开发工具并确保您实际上正在发送带有令牌的帖子。也就是说,您应该添加有关如何添加权限类以及如何添加令牌的更多信息
-
另外,验证所需的标头是
Authorization,因此请确保您的令牌在那里 -
您可以使用 Postman 对 header 进行设置验证
-
@Jason 编辑以提供更多信息
-
@MohammadAli 试图提供更多信息,现在你可以知道我在哪里搞砸了..
标签: django-rest-framework django-authentication django-serializer auth-token