Отстраняване на проблеми с автентификацията на потребители в CyberPanel
Пълно ръководство за диагностициране и решаване на проблеми с влизането на потребители в контролния панел CyberPanel.
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.