Технически ръководства

Отстраняване на проблеми с автентификацията на потребители в CyberPanel

Пълно ръководство за диагностициране и решаване на проблеми с влизането на потребители в контролния панел CyberPanel.

cyberpanelавтентификацияотстраняванеdjangoхостинг

CyberPanel е стабилен контролен панел за уеб хостинг; въпреки това, като всяка сложна система, понякога може да изпитва проблеми с автентификацията. Това ръководство предлага стъпка по стъпка подход за диагностициране и решаване на проблеми с влизането на потребители в CyberPanel.

Първоначални симптоми

Нашият процес за отстраняване на неизправности започна с два основни симптома:

  • Съобщение за грешка, указващо “Administrator matching query does not exist.”
  • Тази грешка се развиваше в съобщение за “грешна парола”, въпреки че паролата беше точна.

Стъпка 1: Проверка на връзката с базата данни и съществуването на потребителя

За начало потвърдете, че връзката с базата данни функционира правилно и че потребителят съществува в системата. Изпълнете следната команда в терминала:

python manage.py shell

След това стартирайте следния Python код:

from django.contrib.auth.models import User
from django.contrib.auth.hashers import check_password

user = User.objects.get(username='admin')
print(check_password('your_password_here', user.password))

Ако това върне True, потвърждава, че потребителят съществува и паролата е правилно съхранена в базата данни.

Стъпка 2: Проверка на връзката с базата данни

След това проверете дали връзката с базата данни работи:

from django.db import connection
cursor = connection.cursor()
cursor.execute("SELECT 1")
print(cursor.fetchone())

Това трябва да изведе (1,). Ако не го прави, може да има проблем с връзката с базата данни, който изисква допълнително разследване.

Стъпка 3: Преглед на settings.py

Важно е да проверите файла settings.py за точни конфигурации на базата данни и автентификацията. Съответният раздел трябва да прилича на следното:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'cyberpanel',
        'USER': 'cyberpanel',
        'PASSWORD': 'your_password_here',
        'HOST': 'localhost',
        'PORT': '',
    }
}

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
]

Файлът се намира на:

/usr/local/CyberCP/CyberCP/settings.py

Уверете се, че тези настройки са правилни и че паролата на базата данни съвпада с вашата действителна парола за базата данни.

Стъпка 4: Проверка на бекенда за автентификация

В Django shell проверете бекендите за автентификация със следната команда:

from django.conf import settings
print(settings.AUTHENTICATION_BACKENDS)

За да изпълните тази команда, навигирайте до директорията на CyberPanel:

cd /usr/local/CyberCP/
python manage.py shell

Това трябва да върне [‘django.contrib.auth.backends.ModelBackend’].

Стъпка 5: Тестване на автентификацията

Опитайте се да се автентифицирате ръчно в Django shell:

from django.contrib.auth import authenticate
user = authenticate(username='admin', password='your_password_here')
print(user)

Ако това върне потребителския обект, това показва, че системата за автентификация на Django работи правилно.

Стъпка 6: Проверка на потребителския модел

Проверете дали CyberPanel използва стандартния Django User модел:

from django.conf import settings
print(settings.AUTH_USER_MODEL)

Това трябва да върне ‘auth.User’.

Стъпка 7: Проверка на целостта на базата данни

Уверете се, че има само един ‘admin’ потребител в базата данни. Следната команда трябва да върне 1:

User.objects.filter(username='admin').count()

Стъпка 8: Отстраняване на неизправности в процеса за влизане на CyberPanel

Ако всички предишни проверки преминат, но все още не можете да влезете, проблемът може да се намира в персонализирания процес за влизане на CyberPanel. Помислете за разследване на следните области:

  • Прегледайте изгледа за влизане във файловете views.py, намиращи се в структурата на директорията на CyberPanel.
  • Потърсете персонализиран код за автентификация във файлове като auth.py.
  • Инспектирайте всички файлове signals.py за signal handlers, които може да прихващат процеса на влизане.

За да добавите debug логване към процеса за влизане, включете следния код:

import logging
logger = logging.getLogger(__name__)

# В функцията за влизане
logger.debug(f"Login attempt for user: {username}")
logger.debug(f"Password check result: {check_password(password, user.password)}")

Стъпка 9: Проверка за липсващи модули

Ако срещнете ModuleNotFoundError, като:

ModuleNotFoundError: No module named 'firewall.models'

Това показва липсващ или неправилно конфигуриран модул. За да решите този проблем:

  • Проверете дали директорията на модула съществува:
ls /usr/local/CyberCP/firewall
  • Уверете се, че модулът е включен в INSTALLED_APPS в settings.py.
  • Стартирайте Django миграции със следните команди:
python manage.py makemigrations
python /usr/local/CyberCP/manage.py migrate

Стъпка 10: Създаване на потребител в CyberPanel

Ако продължавате да изпитвате проблеми, може да се наложи да пресъздадете admin потребителя. CyberPanel предоставя персонализирана команда за тази цел, която е по-обхватна от стандартната команда createsuperuser на Django.

Командата за създаване на потребител в CyberPanel е дефинирана в скрипта /usr/bin/cyberpanel. Ето как да я използвате:

cyberpanel createUser --firstName Cyber --lastName Panel --email email@cyberpanel.net --userName admin --password securepassword --websitesLimit 0 --selectedACL admin --securityLevel HIGH

Тази команда използва персонализираната логика за създаване на потребители на CyberPanel, като гарантира, че потребителят е правилно настроен в екосистемата на CyberPanel, включително правилното ACL и ниво на сигурност.

Моля, обърнете внимание, че е добра идея след всяка от горните команди да рестартирате услугата CyberPanel:

systemctl restart lscpd

lscpd.service е LSCPD Daemon, който захранва CyberPanel.

Свързани статии