#python #django-rest-framework #django-rest-framework-simplejwt
Вопрос:
Я пытаюсь получить доступ и обновить токены JWT с помощью djangorestframework-simplejwt
. Я попытался попасть в http://127.0.0.1:8000/api/token/
конечную точку с помощью метода POST, отправив имя пользователя и пароль в качестве данных запроса на почтальона, но в ответ "detail": "No active account found with the given credentials"
получил 401 несанкционированный код ошибки. Я также выполнил запуск python manage.py createsuperuser
, но ошибка все равно возникает.
Вот следующий settings.py
файл:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'api.apps.ApiConfig', 'rest_framework', 'rest_framework.authtoken', 'drf_spectacular', 'rest_framework_simplejwt', 'corsheaders', ] from datetime import timedelta ... SIMPLE_JWT = { 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=1), 'REFRESH_TOKEN_LIFETIME': timedelta(days=1), 'ROTATE_REFRESH_TOKENS': False, 'BLACKLIST_AFTER_ROTATION': False, 'UPDATE_LAST_LOGIN': False, 'ALGORITHM': 'HS256', 'SIGNING_KEY': SECRET_KEY, 'VERIFYING_KEY': None, 'AUDIENCE': None, 'ISSUER': None, 'JWK_URL': None, 'LEEWAY': 0, 'AUTH_HEADER_TYPES': ('Bearer',), 'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION', 'USER_ID_FIELD': 'username', 'USER_ID_CLAIM': 'user_id', 'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule', 'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',), 'TOKEN_TYPE_CLAIM': 'token_type', 'JTI_CLAIM': 'jti', 'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp', 'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5), 'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1), } REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework_simplejwt.authentication.JWTAuthentication', ], "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", }
Сериализатор пользователей на serializers.py
class UserSerializer(serializers.ModelSerializer): class Meta: model = Users fields = [ 'user_id', 'username', 'email', 'password', 'date_created', ]
Модель пользователя на models.py :
class Users(models.Model): user_id = models.BigAutoField(primary_key=True) username = models.CharField(max_length=256) email = models.CharField(max_length=256) password = models.CharField(max_length=1024) date_created = models.DateField(auto_now_add=True) def __str__(self): return str(self.username)
User registration view at views.py :
class UserRegister(APIView): def post(self, request): user = request.data serializer = UserSerializer(data=user, context = {'request':request}) if serializer.is_valid(): user_saved = serializer.save(password=make_password(user['password'])) return Response(user_saved, status=200) return Response({ "error" : "Error encountered"}, status=406)
И в urls.py :
urlpatterns = [ ... path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), ]
Ответ №1:
Проблема возникает из-за того, что класс default_user_authentication_rule(user)
возвращает пользователя, если пользователь не является никем, а у пользователя есть истинное состояние is_active. Класс доступен в authentication.py
файле внутри rest_framework_simplejwt
библиотеки. Класс записывается следующим образом :
def default_user_authentication_rule(user): # Prior to Django 1.10, inactive users could be authenticated with the # default `ModelBackend`. As of Django 1.10, the `ModelBackend` # prevents inactive users from authenticating. App designers can still # allow inactive users to authenticate by opting for the new # `AllowAllUsersModelBackend`. However, we explicitly prevent inactive # users from authenticating to enforce a reasonable policy and provide # sensible backwards compatibility with older Django versions. return user is not None and user.is_active
Проблема была решена путем добавления столбца is_active в модель пользователей следующим образом :
class Users(models.Model): user_id = models.BigAutoField(primary_key=True) username = models.CharField(max_length=256) email = models.CharField(max_length=256) password = models.CharField(max_length=1024) date_created = models.DateField(auto_now_add=True) is_active = models.BooleanField(default=True) def __str__(self): return str(self.username)
и установите переменную DRF Simple JWT 'USER_ID_FIELD'
'username'
в следующее значение :
SIMPLE_JWT = { ... 'AUTH_HEADER_TYPES': ('Bearer',), 'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION', 'USER_ID_FIELD': 'username', 'USER_ID_CLAIM': 'user_id', 'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',
затем запустите python manage.py makemigrations
, а затем python manage.py migrate
примените изменения модели пользователей.
Где скачать официальный кошелек EOS для холодного хранения криптовалюты? Как безопасно установить и настроить плагин Scatter для переводов EOS и игры Wizards.one? Решение ошибки No accounts found и импорт приватных ключей.
Официальный EOS кошелек.
Вы хотите скачать официальный EOS кошелёк?
Его нет. По заявлению на сайте сети, Block.one не поддерживает ни один из имеющихся на рынке кошельков. Это значит, что пользователи и сообщество должны самостоятельно выбирать, где именно хранить криптовалюту (а также нести связанные с этим риски).
Мы рекомендуем использовать аккаунт в сети EOS в связке с плагином Scatter. Работаем непосредственно с приватными ключами, которые храним у себя (не загружаем в сеть, потому не компрометируем свои сбережения в EOS).
Данная инструкция по шагам покажет, как создать ключи для кошелька EOS, как их привязать к аккаунту (вашему уникальному имени в сети) и защитить под оболочкой Scatter. Такое решение одновременно является и удобным, и безопасным.
Да, потребуется время, чтобы его настроить и разобраться в деталях, но других вариантов нет.
Генерируем ключи EOS.
EOS кошелек – это набор из двух ключей: public key и private key. Криптовалюта хранится во втором, первый необходим для идентификации транзакций. Кроме того, сеть EOS позволяет использовать имена (аккаунты) вместо адресов.
Наш EOS кошелек будет иметь три уровня доступа – Owner, Active и Temp. Такое сочетание ключей повышает защиту.
Первые два обеспечивают доступ к криптовалюте, третий нужен только для тестовой установки (мы его загружаем в сеть, поэтому на финальном этапе вынуждены удалить, как промежуточное звено).
Для создания ключей EOS необходимо скачать генератор.
- Наиболее безопасно работать с ним в среде Linux (например, на виртуальной машине без сторонних программ, торрентов и сомнительного сёрфинга).
- Там же следует хранить приватные ключи EOS – в зашифрованном контейнере (а не в блокнотике на рабочем столе или в заметках смартфона).
Если в предыдущих абзацах встретились малопонятные слова, пожалуйста, изучите эту инструкцию по безопасности в работе с криптовалютами.
Обязательно: перед созданием ключей отключитесь от сети Интернет, работаем в оффлайн-режиме.
Скачайте программу EOSkey. Отключитесь от сети Интернет. Далее по шагам:
1. Переходим во вкладку Generate and Validate Keys.
2. Нажимаем кнопку Generate. Создаём два ключа – public и private. Это и есть одна пара ключей.
3. Теперь проверим их, для этого скопируйте последовательно каждый ключ в поле Validate Key Pair и нажмите Validate. Если программа выдаст сообщение: Valid Key Pair! – всё хорошо.
4. Запишите пару ключей в файл и их роль (Temp, Active и Owner). Ещё раз проверьте символы каждого ключа.
Запись вида (одна пара для Temp):
- Temp Public key: EOS6…..KKVhsNywhEanU69j
- Temp Private key: 5KXUc…..8Z6Zt3PNwKh
Последовательно генерируем три пары ключей – будущий EOS кошелек будет работать с ними на разных этапах. Пара выглядит так: приватный ключ + открытый ключ. Всего у вас получится 6 ключей (пары сохраняем без изменений, ключи не смешиваем).
Каждой паре условно назначаем её роль. Так, Owner – это ключи с наибольшими правами, с их помощью можно управлять другими парами.
Например, если один из ваших ключей был скомпрометирован или вы сомневаетесь в его безопасности, его следует заменить на новый – для подтверждения операции и нужна связка с более высокими правами.
Ключи кошелька EOS с ролью Owner могут редактировать уровень Active и Temp, но не наоборот.
Поэтому приоритет хранения (и скрытности) у Owner должен быть максимальным. Постарайтесь их не доставать без острой необходимости.
Наличие нескольких пар ключей помогает не светить главным ключом. Active мы будет толкать в смежные кошельки (типа Scatter) и использовать для участия в Airdrop (здесь очень аккуратно).
Разумеется, деление ключей во время их создания – условное. Вы сами определяете роль каждого ключа. EOS позволяет обходится и одной базовой связкой, но зачем рисковать (и пренебрегать удобной опцией)?
Создаём аккаунт EOS.
EOS кошелек позволяет использовать уникальные имена (названия аккаунтов) для переводов токенов. Поэтому сначала нужно получить собственное имя и привязать к нему наши ключи.
Наличие единого имени – удобная опция: вы можете привязать несколько разных пар ключей к этому счету без необходимости каждый раз доставать и проверять публичные ключи.
Включаем Интернет, заходим на сайт MyEOSKit, вкладка Create Account – и придумываем уникальное имя.
Нас интересует опция – Create account via exchange withdrawal.
Это значит, что для регистрации аккаунта в EOS нам придётся пополнить свой же кошелек с помощью биржевого перевода. На момент создания этой инструкции, более удобных и простых решений не было.
Для завершения регистрации, нам потребуется плагин Scatter (его мы установим и настроим чуть позже, так как могут возникнуть сложности с доступом в России, ошибка No accounts found).
Итак, придумайте и запишите имя для EOS кошелька – 12 символов, латинские буквы в нижнем регистре и цифры от 1 до 5. Если имя свободно – рамка будет подсвечена зелёным цветом.
Дальше в пустое поле Owner Key & Active Key вводим наш ключ Temp. Это временный ключ, который мы используем для создания кошелька – потом мы заменим его в целях безопасности. Вводим именно public key (первый в связке).
После этого нажимаем кнопку Continue, открывается инструкция для пополнения нашего нового кошелька EOS.
Наши действия:
1. Войдите в личный кабинет на бирже, поддерживающей покупку и продажу EOS.
2. Купите минимум 1 EOS (держим в уме комиссию, которую спишет биржа за вывод EOS со счета).
3. Сделайте перевод на 0.8801 EOS для получателя signup…. с Memo (внимательно проверяйте – для вашего аккаунта будут свои данные).
Почему для создания кошелька EOS нужно делать перевод?
Сеть EOS устроена таким образом, что для работы с ней вам нужно сначала оплатить аренду CPU, RAM и NET (дальше все транзакции будут без комиссии). Цены на аренду постоянно меняются, для оплаты принимается сам EOS.
Мы переводим EOS на специальный смарт-контракт, который запоминает наш временный public key и уникальное имя, чтобы подтвердить активацию аккаунта. Проверить регистрацию аккаунта можно после перевода EOS через обозреватель блоков (достаточно ввести зарегистрированное имя).
С какой биржи можно вывести EOS для активации аккаунта?
С этим есть определённые сложности: далеко не все криптовалютные биржи, поддерживающие торговлю EOS, могут отправить перевод на смарт-контракт с вашим Memo.
Например, Gate.io разрешает вывод с Memo не более 9 символов (у нас их явно больше), а Kucoin – минимум 1 EOS (комиссия за вывод – 0.05 EOS, в момент тестов были задержки с email-подтверждением).
Решение – вывод с биржи HitBTC.
Не самая удобная площадка для торговли, но для регистрации аккаунта в EOS подходит отлично. Для вывода указывайте Recipient в поле Address, a Memo – в PaymentID. Помните про комиссию 0.01 EOS за вывод.
После подтверждения транзакции, проверьте её через обозреватель блоков (укажите имя вашего аккаунта из Memo).
Теперь можно переходить к Scatter.
Scatter + EOS кошелек.
Scatter – это аналог MetaMask, но для работы с сетью EOS (впрочем, поддержка Ethereum тоже реализована). Он создаёт безопасный доступ к вашему кошельку без необходимости каждый раз показывать приватный ключ.
Полезное преимущество Scatter – вы можете создавать несколько профилей в рамках одного приложения, и привязывать к ним ключи EOS. Мы сделаем такую привязку.
Scatter работает в виде отдельной программы и плагина для Chrome. Так как связка Metamask + Chrome + плагины против фишинга и спама хорошо себя показала, советуем установить Scatter тоже в виде плагина.
Установка Scatter простая, заходим в Chrome, https://chrome.google.com/webstore, через поиск находим Scatter.
Перед установкой убедитесь, что у плагина есть большое число установок и отзывов (чтобы не скачать подделку).
Добавляем в браузер и выполняем установку.
1. Придумайте сложный пароль и запишите его в надёжном месте (например, в зашифрованный контейнер). Нажмите Create New Scatter.
2. После этого запишите все 12 фраз (Mnemonic пароль) для восстановления доступа. Это – самая важная часть кошелька. После записи ещё раз проверьте последовательность.
3. Start Basic Setup – вставляем временный Temp Private key. Убедитесь, что высветившийся public key совпадает с тем, что записан у вас ранее (когда генерировали эту пару ключей).
4. Вам предложат список имя_аккаунта@owner – выбираем его и прикрепляем временный ключ кнопкой Use Selected Account.
На данный момент у вас будет одна пара ключей (временные, Temp) и один профиль (Identity).
Scatter тем и хорош, что теперь мы можем изменить Identity (создать несколько разных, для конкретных целей – например, для получения магов из игры Wizards.one), а главное – заменить временный ключ на другие пары (которые создали в самом начале).
Зачем менять ключи EOS?
Так мы избавляемся от слабого звена – только Scatter будет видеть реальную связку ключей (временный ключ мы уже засветили по ходу создания кошелька).
Возвращаемся на MyEOSKit, в раздел Tools – Permissions.
Нажимаем Attach Scatter Identity.
Scatter откроет новое окно Identity Request, в нём выбираем свой профиль (Select Identity), к которому ранее привязали временный ключ, и нажимаем Accept.
На сайте MyEOSKit верхняя часть изменится – появится информация по вашему аккаунту.
А ниже идут поля для ввода публичных ключей с ролью Owner (первое поле) и Active (второе). Эти ключи мы создавали для EOS кошелька в начале инструкции.
Указываем только Public key (private key должен оставаться тайным).
Нажимаем Apdate AUTH.
Появится окно Sactter Signature Request – в нём проверяем, что действия производятся над нашим профилем, нажимаем Accept.
После завершения операции вы увидите запись: Transaction Complete, view tx (по ссылке можно посмотреть детали, которые теперь будут в блокчейне EOS). Загляните в подробности и сравните ключи со своими записями.
Теперь в работе кошелька EOS (и плагина Scatter) будут задействованы оба ключа, но private key из связки Owner (с самыми широкими правами) будет только у вас.
Scatter и MyEOSKit его не видели и не хранят, он не засвечен. В случае экстренной ситуации можно будет аннулировать действие Active key, чтобы защитить вашу криптовалюту.
С этого момента ваши первые ключи (Temp) уже не играют роли (и не могут подставить ваш кошелек EOS в случае утечки).
Замена Identity в Scatter.
Мы только что обновили ключи, но в самом Scatter нужно изменить профиль (там пока ещё установлена временная связка private + public keys).
Открываем Scatter, идём в Key Pairs и удаляем временный ключ.
Затем создаём новый: New, задаём имя Active, вводим Active Private key (генерировали ранее). Сохраняем.
Дальше переходим в Identity, выбираем редактирование:
В поле для сети EOS указываем Active, далее Import и присоединяем его к имя_аккаунта@active (убедитесь, что выбрали именно @active, а не @owner – как делали для временного ключа). Копка Use Selected Account и в самом верху окна – Save.
Настройка Scatter полностью завершена.
Осталось зайти во вкладку Settings – Backup и сохранить файл для восстановления. Сделайте это.
FAQ по EOS кошельку:
– Как восстановить доступ к Scatter на другом компьютере?
С помощью файла Backup (скопируйте содержимое файла) и пароля, который вы указали во время установки плагина. Используйте функцию Load From Backup.
Если вы не уверены, что новый компьютер достаточно безопасен, никогда не вводите код для восстановления. Если есть возможность, установите виртуальную машину и на ней разверните Chrome.
– Ошибка Scatter “No accounts found”.
Вы не сможете импортировать приватные и публичные ключи в Scatter из-за этой ошибки.
По сообщениям в поддержке плагина, проблема No accounts found для ключей EOS распространена именно в России, так как нода плагина часто оказывается в списке блокировки.
Решение: для регистрации аккаунта следует использовать туннель (например, бесплатный плагин Tunnel Bear в Chrome). Туннель позволяет подключиться к ноде за пределами России (выбирайте любую из стран Европы), после импорта ключей, вы можете работать со Scatter без плагина.
– Как и куда вывести EOS с биржи?
Выводить EOS можно на имя вашего аккаунта (мы только что привязали к нему публичные Owner и Active ключи). Имя аккаунта уже подключено к Scatter, который и будет защищать ваш кошелек.
Напоминаем: в криптовалютах (биткоин, эфир, EOS) приватный ключ – и есть ваш единственный кошелек. Программная оболочка делает жизнь пользователя удобнее, но сам EOS “хранится” в private key. Обеспечьте ему наибольшую безопасность.
Удобно переводить EOS и его токены с помощью сайта MyEOSKit. К нему мы подключаемся через плагин Scatter – никто не получает доступ к нашим приватным ключам.
Для переводов между кошельками EOS достаточно указать имя вашего аккаунта (из 12 символов). Memo можно оставлять пустым.
Однако, если вы делаете депозит на биржевой счет, поле Memo должно быть заполнено так, как будет указано в личном кабинете. Дважды проверяйте перед выполнением транзакции.
Wizards.one
Это популярная игра на основе сети EOS.
Для доступа к Wizards.one необходимо заранее зарегистрировать и активировать аккаунт в EOS, установить и настроить плагин Scatter, обновить профиль Identity с указанием email, который вы использовали для airdrop (бесплатные маги).
Вход на сайт игры выполняется только через плагин Scatter (нужно выбрать Identity), все операции в Wizards.one – тоже подтверждаются через транзакции в нём.
Удобный EOS кошелек.
Криптовалютный кошелек EOS, который позволяет управлять сразу несколькими профилями с разными приватными ключами.
Скачать Scatter
-
Защита данных
-
Безопасность приватных ключей
-
Комфорт в работе с кошельком
-
Удобен для начинающих
-
Портфель из криптовалют
Безопасное и комфортное решение в ситуации, когда у EOS нет официального кошелька. Поддерживает токены, держит в тайне приватные ключи и позволяет взаимодействовать с MyEOSKit.
Bug description
after installing portainer and create a new container, when i setup my first account I can’t login to the panel and I got this error in container load:
http error: No administrator account found inside the database (err=Object not found inside the database) (code=404)
Expected behavior
I install the image on my computer, after that, I save the image using the following:
docker save -o portainer.tar portainer/portainer
then I move the file to another machine and I load the image by the following:
docker load -i portainer.tar
Technical details:
- Portainer version:
- Docker version (18.06.1-ce):
- Platform (linux):
- Command used to start Portainer (
docker run -p 9000:9000 -d --restart=always -v /var/run/docker.sock:/var/run/dokcer.sock portainer/portainer
):
Additional context
When I load in to the panel I got «Your session has esxpired»
It’s not a cache problem, I’m using Private Browsing — incognito and a deferent browser such as firefox and chrome,
as I Say before the error come from image load, so it’s not a cache problem>
@zablah
This is an expected error: http error: No administrator account found inside the database (err=Object not found inside the database) (code=404)
It means that no administrator has been defined yet for this Portainer instance. Can you try to access the admin init view at your-ip:9000/#/init/admin
and try to set it ?
@deviantony
I already create an administrator user but I can’t login
I got this error when I trying to create an administrator user:
http error: Unable to create administrator user (err=An administrator user already exists) (code=409)
and when I try to login I got:
Your session has expired
and I trying multi-browser with multi-profile, and private — incognito
Anything in the container logs after you try to login?
Have you deployed Portainer on a standalone host or inside a Swarm cluster? How did you deploy Portainer?
I got the same error on a fresh installation!
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
@antonio-petricca is it perfectly normal to see this error in Portainer logs upon first startup. Have you been able to set the administrator user via the UI?
Hi, I get this:
Hi, there are the only log messages:
2018/10/24 14:57:58 Templates already registered inside the database. Skipping template import.
2018/10/24 14:57:58 Starting Portainer 1.19.2 on :9000
2018/10/24 14:58:48 http error: No administrator account found inside the database (err=Object not found inside the database) (code=404)
Hm, interesting. Nothing in the logs.
@antonio-petricca Can you inspect the failing request in your browser’s developer tools? Are you using any reverse proxy in front of Portainer?
Hi, I attached the request/response dumped by Opera network analysis tool.
When I send the request I get a 403 error wich results in the above mentiod red error alert.
localhost.zip
@antonio-petricca cannot read the response content from this dump? Any chance to get a screenshot?
Hi, here some screenshots about error response:
@antonio-petricca Thanks for the screenshot. Nothing in the Portainer codebase would return a 403 for the /api/admin/init
endpoint… Are you using a reverse proxy in front of Portainer?
I havesimply installed it as explained by https://portainer.io/install.html several times, on my PCs and on production environments, but this is the 1st time I get this problem!
@antonio-petricca that is pretty weird, can you give us information about the underlying OS and Docker version ?
I am on Linux Mint Mate 4bit (Ubuntu 18.04), 8Gb RAM, Docker 18.06.1-ce, build e68fc7a .
As I stated previously I use portainer with success since many time, and I did never get this problem!
Is there some switch to increment log verbosity?
@antonio-petricca nope, no way to augment log verbosity.
This is a pretty strange issue and it’s not really the same error as the one reported by the OP. Long shot here, could you try to remove the portainer image and to re-deploy it?
Ah that’s a pretty strange issue indeed !! Glad we solved it, but I wonder what could be the problem with Opera.
Closing this issue. Thanks for spending some time helping us diagnose this !
Got the same problem.
Inspect the image latest
tag on Docker Hub, found it was built 2 months ago
So I tried the tag fix2443-offline-browsing-perfomances
, issue fixed…
😄
@gitzhou I’d recommend trying with develop
instead, fix2443-offline-browsing-perfomances
has not been merged nor tested yet.
Are you using Opera as well?
@gitzhou I’d recommend trying with
develop
instead,fix2443-offline-browsing-perfomances
has not been merged nor tested yet.Are you using Opera as well?
Hi @deviantony Thanks for teaching, I’ll change the image tag.
No, I’ve tried Chrome and Firefox and both of them gave the same error message
Try restarting Docker. On my Windows 10 computer I launch Docker and once it is running I launch Portainer and get this error. If I then restart Docker, wait until it is running again and then try running Portainer it works fine. I have this problem on every boot and the Docker restart fixes the problem every time. This has been going on for as long as I can remember.
This Docker restart issue has been around for a while. See docker/for-win#2303 (which appears closed but only because people gave up trying to figure out the root cause and just restart Docker to fix the problem).
Bug description
after installing portainer and create a new container, when i setup my first account I can’t login to the panel and I got this error in container load:
http error: No administrator account found inside the database (err=Object not found inside the database) (code=404)
Expected behavior
I install the image on my computer, after that, I save the image using the following:
docker save -o portainer.tar portainer/portainer
then I move the file to another machine and I load the image by the following:
docker load -i portainer.tar
Technical details:
- Portainer version:
- Docker version (18.06.1-ce):
- Platform (linux):
- Command used to start Portainer (
docker run -p 9000:9000 -d --restart=always -v /var/run/docker.sock:/var/run/dokcer.sock portainer/portainer
):
Additional context
When I load in to the panel I got «Your session has esxpired»
It’s not a cache problem, I’m using Private Browsing — incognito and a deferent browser such as firefox and chrome,
as I Say before the error come from image load, so it’s not a cache problem>
@zablah
This is an expected error: http error: No administrator account found inside the database (err=Object not found inside the database) (code=404)
It means that no administrator has been defined yet for this Portainer instance. Can you try to access the admin init view at your-ip:9000/#/init/admin
and try to set it ?
@deviantony
I already create an administrator user but I can’t login
I got this error when I trying to create an administrator user:
http error: Unable to create administrator user (err=An administrator user already exists) (code=409)
and when I try to login I got:
Your session has expired
and I trying multi-browser with multi-profile, and private — incognito
Anything in the container logs after you try to login?
Have you deployed Portainer on a standalone host or inside a Swarm cluster? How did you deploy Portainer?
I got the same error on a fresh installation!
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
@antonio-petricca is it perfectly normal to see this error in Portainer logs upon first startup. Have you been able to set the administrator user via the UI?
Hi, I get this:
Hi, there are the only log messages:
2018/10/24 14:57:58 Templates already registered inside the database. Skipping template import.
2018/10/24 14:57:58 Starting Portainer 1.19.2 on :9000
2018/10/24 14:58:48 http error: No administrator account found inside the database (err=Object not found inside the database) (code=404)
Hm, interesting. Nothing in the logs.
@antonio-petricca Can you inspect the failing request in your browser’s developer tools? Are you using any reverse proxy in front of Portainer?
Hi, I attached the request/response dumped by Opera network analysis tool.
When I send the request I get a 403 error wich results in the above mentiod red error alert.
localhost.zip
@antonio-petricca cannot read the response content from this dump? Any chance to get a screenshot?
Hi, here some screenshots about error response:
@antonio-petricca Thanks for the screenshot. Nothing in the Portainer codebase would return a 403 for the /api/admin/init
endpoint… Are you using a reverse proxy in front of Portainer?
I havesimply installed it as explained by https://portainer.io/install.html several times, on my PCs and on production environments, but this is the 1st time I get this problem!
@antonio-petricca that is pretty weird, can you give us information about the underlying OS and Docker version ?
I am on Linux Mint Mate 4bit (Ubuntu 18.04), 8Gb RAM, Docker 18.06.1-ce, build e68fc7a .
As I stated previously I use portainer with success since many time, and I did never get this problem!
Is there some switch to increment log verbosity?
@antonio-petricca nope, no way to augment log verbosity.
This is a pretty strange issue and it’s not really the same error as the one reported by the OP. Long shot here, could you try to remove the portainer image and to re-deploy it?
Ah that’s a pretty strange issue indeed !! Glad we solved it, but I wonder what could be the problem with Opera.
Closing this issue. Thanks for spending some time helping us diagnose this !
Got the same problem.
Inspect the image latest
tag on Docker Hub, found it was built 2 months ago
So I tried the tag fix2443-offline-browsing-perfomances
, issue fixed…
😄
@gitzhou I’d recommend trying with develop
instead, fix2443-offline-browsing-perfomances
has not been merged nor tested yet.
Are you using Opera as well?
@gitzhou I’d recommend trying with
develop
instead,fix2443-offline-browsing-perfomances
has not been merged nor tested yet.Are you using Opera as well?
Hi @deviantony Thanks for teaching, I’ll change the image tag.
No, I’ve tried Chrome and Firefox and both of them gave the same error message
Try restarting Docker. On my Windows 10 computer I launch Docker and once it is running I launch Portainer and get this error. If I then restart Docker, wait until it is running again and then try running Portainer it works fine. I have this problem on every boot and the Docker restart fixes the problem every time. This has been going on for as long as I can remember.
This Docker restart issue has been around for a while. See docker/for-win#2303 (which appears closed but only because people gave up trying to figure out the root cause and just restart Docker to fix the problem).
В настоящее время, когда пользователь пытается войти в систему с несуществующим адресом электронной почты/именем пользователя, отображается эта ошибка woocommerce по умолчанию:
Я пытаюсь проверить: Если адрес электронной почты/имя пользователя НЕ существует, отобразить другое сообщение.
Например «Учетной записи с этим адресом электронной почты не существует, создайте ее.»
Хук woocommerce_registration_error_email_exists
проверяет, пытался ли пользователь зарегистрироваться с уже существующим адресом электронной почты, поэтому я пытаюсь отменить это с помощью !email_exists
. Можно ли применить это к полю входа?
Мой код ниже не срабатывает и по-прежнему отображает сообщение по умолчанию:
add_filter( 'woocommerce_registration_error_email_exists', 'no_account_found' );
function no_account_found($email, $username = '', $password = '' ){
if ( !email_exists( $email ) ) {
return new WP_Error( 'registration-error-email-exists', apply_filters( 'woocommerce_registration_error_email_exists', __( 'No account found with this email. Please create one.', 'woocommerce' ), $email ) );
}
}
1 ответ
email_exists( string $email )
возвращает идентификатор пользователя в случае успеха и false в случае неудачи.
Поэтому попробуйте изменить свое условие следующим образом:
<?php
add_filter( 'woocommerce_registration_error_email_exists', 'no_account_found' );
function no_account_found($email, $username = '', $password = '' ){
if (email_exists($email) ) {
//the email exists do something
}else{
//email does not exist
return new WP_Error( 'registration-error-email-exists', apply_filters( 'woocommerce_registration_error_email_exists', __( 'No account found with this email. Please create one.', 'woocommerce' ), $email ) );
}
}
1
Masivuye Cokile
16 Апр 2019 в 13:36