recherche

Maison  >  Questions et réponses  >  le corps du texte

python - JWT, django如何定制关于用户的Permission?

使用基于cookies的验证时,写了这样一个Permission

class IsAuthenticatedAndStudentOwner(BasePermission):
    message = 'You must be a student.'
    def has_permission(self, request, view):

        return request.user.is_authenticated() and smart_str(request.user.identity) == '学生'

    def has_object_permission(self, request, view, obj):

        return obj.student.user == request.user

当我使用jwt验证后,登录返回一个token,不运行login(request, user),也就是request.userAnonymousUser.

# login(request, user_obj)
payload = jwt_payload_handler(user_obj)
token = jwt_encode_handler(payload)
data['token'] = token
return data

那么我该怎么修改这个Permission呢,求解。

高洛峰高洛峰2743 Il y a quelques jours857

répondre à tous(2)je répondrai

  • 阿神

    阿神2017-05-15 17:16:23

    jwt的验证,你是通过headerORcookie的方式传递的?
    define another method in class IsAuthenticatedAndStudentOwner

    def is_authenticated(self, request, view):
        if using cookie:
            return request.user.is_authenticated()
        elseif jwt:
            ...
    
    def has_permission(self, request, view):
    
        return self.is_authenticated(request, view) and smart_str(request.user.identity) == '学生'
    
        

    répondre
    0
  • 習慣沉默

    習慣沉默2017-05-15 17:16:23

    Vous pouvez également l'ouvrir en utilisant jwtlogin(request, user_obj) ah

    L'utilisateur back-end existe toujours dans la requête, mais lors de l'utilisation de jwt, le modèle Django n'est plus utilisé et l'utilisateur ne peut pas être utilisé librement dans la page

    J'écrirai ceci bientôt, continuez à prêter attention à l'échange

    répondre
    0
  • Annulerrépondre