diff --git a/api/config/settings/common.py b/api/config/settings/common.py
index c0ff1e8283bb2286c2ab0cd5080a8911c228e65f..1976ddcab2d0740122963e0512ba4da198f8b117 100644
--- a/api/config/settings/common.py
+++ b/api/config/settings/common.py
@@ -327,7 +327,7 @@ SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
 # AUTHENTICATION CONFIGURATION
 # ------------------------------------------------------------------------------
 AUTHENTICATION_BACKENDS = (
-    "django.contrib.auth.backends.ModelBackend",
+    "funkwhale_api.users.auth_backends.ModelBackend",
     "allauth.account.auth_backends.AuthenticationBackend",
 )
 SESSION_COOKIE_HTTPONLY = False
diff --git a/api/funkwhale_api/users/auth_backends.py b/api/funkwhale_api/users/auth_backends.py
new file mode 100644
index 0000000000000000000000000000000000000000..404b34f4d1d2efa35bf83c9178da163ac3a0110c
--- /dev/null
+++ b/api/funkwhale_api/users/auth_backends.py
@@ -0,0 +1,17 @@
+from django.contrib.auth import backends, get_user_model
+
+
+class ModelBackend(backends.ModelBackend):
+    def get_user(self, user_id):
+        """
+        Select related to avoid two additional queries
+        """
+        try:
+            user = (
+                get_user_model()
+                ._default_manager.select_related("actor__domain")
+                .get(pk=user_id)
+            )
+        except get_user_model().DoesNotExist:
+            return None
+        return user if self.user_can_authenticate(user) else None