Django rest framework django rest framework JWT返回匿名用户,尽管权限类为5
我在前端使用angular 5。使用HTTP拦截器,如果客户端已登录,它将向我的服务器发送令牌和任何HTTP请求。我可以登录我的系统。因此,JWT方案工作正常 拦截器是这样的:我控制台记录令牌以确保它被添加,并且它在我的日志中正常工作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
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