python - JWT, comment Django personnalise-t-il les autorisations des utilisateurs?
高洛峰
高洛峰 2017-05-15 17:14:23
0
2
872

Lorsque vous utilisez une validation basée sur cookies, écrivez un tel 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

Lorsque j'utilise jwt pour vérifier, la connexion renvoie un token sans exécuter login(request, user), c'est-à-dire que request.user est AnonymousUser.

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

Alors, comment dois-je modifier cela Permission S'il vous plaît, aidez-moi.

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
阿神

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) == '学生'

    
習慣沉默

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal