Django-React身份验证:限制可以获得simpleJWT令牌的用户

ehs*_*ird 2 django jwt reactjs

我的后端有两个 React 前端:第一个供所有用户使用,第二个是管理面板,只能由 is_staff 用户使用。

使用 simplejwt 令牌限制访问的最佳方法是什么?

我已重写 TokenObtainPairSerializer 以包含其他字段,例如“is_staff”。

所以我有两个问题:

  1. 仅仅检查前端的 is_staff 字段就足够安全了吗?在我看来这不是一个好主意。

  2. 如果我想为管理员身份验证创建第二个 API URL 条目并覆盖后端的身份验证逻辑以仅向员工用户颁发令牌。我到底应该重写什么方法/类来改变这个?这是一个好主意吗?

Pat*_*tas 5

is_staff标志可用于前端的可视化检查,但仅限于具有此类权限的用户的视图必须在后端受到保护。

假设您正在使用 Django Rest Framework,保护视图的最佳方法是使用权限,或更准确地说,自定义权限

from rest_framework import permissions

class IsStaffUser(permissions.BasePermission):
    def has_permission(self, request, view):
        return request.user and request.user.is_staff
Run Code Online (Sandbox Code Playgroud)

还有他们

from rest_framework.permissions import IsStaffUser

class StaffViewModelViewSet(viewsets.ModelViewSet):
    permission_classes = (IsStaffUser,)
Run Code Online (Sandbox Code Playgroud)

有关这方面的更多内容可以在以下位置找到:

Django Rest Framework 仅限员工权限

Django Rest Framework 每个视图的自定义权限

Django Rest框架权限