parent
							
								
									a1e220a67f
								
							
						
					
					
						commit
						f9acb2a120
					
				
				 5 changed files with 75 additions and 3 deletions
			
			
		| @ -0,0 +1,11 @@ | |||||||
|  | import rest_framework.permissions | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def jwt_response_payload_handler(token, user=None, request=None): | ||||||
|  |     return { | ||||||
|  |         'token': token, | ||||||
|  |         'id': user.id, | ||||||
|  |         'username': user.username, | ||||||
|  |         'email': user.email, | ||||||
|  |         'is_active': user.is_active, | ||||||
|  |     } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | from rest_framework.permissions import BasePermission | ||||||
|  | from rest_framework_jwt.authentication import jwt_decode_handler | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class IsOwnerOrReadOnly(BasePermission): | ||||||
|  |     def has_permission(self, request, view): | ||||||
|  |         if request.user.username == 'admin': | ||||||
|  |             return True | ||||||
|  | 
 | ||||||
|  |     def has_object_permission(self, request, view, obj): | ||||||
|  |         token = request.META['HTTP_AUTHORIZATION'][5:] | ||||||
|  |         token_user = jwt_decode_handler(token)  # 解析token | ||||||
|  |         if token_user: | ||||||
|  |             return obj.user.id == token_user['user_id'] | ||||||
|  |         return False | ||||||
					Loading…
					
					
				
		Reference in new issue