From a261b2de3c11a98cf443b17d11551dce535e6ba0 Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 7 Aug 2023 17:00:01 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=20ssh=20=E5=85=AC=E9=92=A5=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/users/models/user.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/users/models/user.py b/apps/users/models/user.py index 4a7dccd05..4e1f2757b 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -8,6 +8,7 @@ import string import uuid from typing import Callable +import sshpubkeys from django.conf import settings from django.contrib.auth.hashers import check_password from django.contrib.auth.models import AbstractUser @@ -105,7 +106,6 @@ class AuthMixin: return '' if self.public_key: - import sshpubkeys try: return sshpubkeys.SSHKey(self.public_key) except (TabError, TypeError): @@ -153,21 +153,21 @@ class AuthMixin: return False @staticmethod - def get_public_key_body(key): - for i in key.split(): - if len(i) > 256: - return i - return key + def get_public_key_md5(key): + try: + key_obj = sshpubkeys.SSHKey(key) + return key_obj.hash_md5() + except Exception as e: + return '' def check_public_key(self, key): if not self.public_key: return False - key = self.get_public_key_body(key) - key_saved = self.get_public_key_body(self.public_key) - if key == key_saved: - return True - else: + key_md5 = self.get_public_key_md5(key) + if not key_md5: return False + self_key_md5 = self.get_public_key_md5(self.public_key) + return key_md5 == self_key_md5 class RoleManager(models.Manager):