Django rest framework django rest framework JWT返回匿名用户,尽管权限类为5

Django rest framework django rest framework JWT返回匿名用户,尽管权限类为5,django-rest-framework,jwt,django-permissions,django-rest-framework-jwt,Django Rest Framework,Jwt,Django Permissions,Django Rest Framework Jwt,我在前端使用angular 5。使用HTTP拦截器,如果客户端已登录,它将向我的服务器发送令牌和任何HTTP请求。我可以登录我的系统。因此,JWT方案工作正常 拦截器是这样的:我控制台记录令牌以确保它被添加,并且它在我的日志中正常工作 import { Injectable } from '@angular/core'; import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/c

我在前端使用angular 5。使用HTTP拦截器,如果客户端已登录,它将向我的服务器发送令牌和任何HTTP请求。我可以登录我的系统。因此,JWT方案工作正常

拦截器是这样的:我控制台记录令牌以确保它被添加,并且它在我的日志中正常工作

import { Injectable } from '@angular/core';
import {
  HttpRequest,
  HttpHandler,
  HttpEvent,
  HttpInterceptor
} from '@angular/common/http';
import {UserAuthorizationService} from "../userservice/userauthorizationservice/userauthorizationservice";
import { Observable } from 'rxjs/Observable';

@Injectable()
export class TokenInterceptor implements HttpInterceptor{
  constructor(private tokenservice: UserAuthorizationService){}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>{
    let token = this.tokenservice.checklocalfortoken();
    if(token == null){
      token = this.tokenservice.checksessionfortoken();
    }
    if(token != null){
      console.log('here is the token being sent');
      console.log(token);
      request = request.clone({
        setHeaders: {
          Authorization: 'JWT ' + token
        }
      });
    }
    return next.handle(request);


  }

}
权限类:

class Issuitssuperuser(BasePermission):

    def has_permission(self, request, view):
        if request.user.issuitssuperuser:
            return True
        return False
错误:

如果请求。用户['issuitssuperuser']: TypeError:“AnonymousUser”对象没有属性“getitem” [10/May/2018 20:36:51]“选项/api/user/suits/HTTP/1.1”500 21855 正在执行系统检查


但是为什么呢?这不酷。我做错了什么,让这一切变得不酷?我希望它很酷。

我最终为APIVIEWS编写了自己的权限,并为泛型使用了django权限

更简单,我已经厌倦了:

class SuitsPermissions():

    def superuser(self, user):
        if user.issuitssuperuser:
            return True
        return False

    def admin(self, user):
        if user.issuitsadministrator:
            return True
        return False

您是否尝试过请求.user.issuitsuperuser?我没有。我现在正在尝试,您请求的用户似乎无法识别,因为它正在显示
'AnonymousUser'对象
。因此,这意味着后端没有接收到JWT令牌。您可以添加角度代码,以便其他人可以帮助您。@SK.FazleeRabby我已经更新了问题
class SuitsPermissions():

    def superuser(self, user):
        if user.issuitssuperuser:
            return True
        return False

    def admin(self, user):
        if user.issuitsadministrator:
            return True
        return False