Рейтинг:0

Запрос пароля SQL Dovecot UNION

флаг cn

У меня есть отдельные таблицы пользователей и доменов. Когда домен помечен как неактивный, я хочу, чтобы все пользователи этого домена не прошли аутентификацию.

Этот запрос работает нормально.

пароль_запрос = \
         ВЫБРАТЬ CONCAT("5500") AS GID, CONCAT("5500") AS uid, \
         CONCAT("/mail/dir/",'%d','/','%n') КАК домашний,Электронная почта как пользователь, Пароль как пароль \
         FROM users_table ГДЕ Email='%u' AND active=1;

Теперь я пытаюсь добавить проверку, чтобы увидеть, отмечен ли домен как активный. Добавление ВЫБЕРИТЕ имя домена ИЗ domains_table UNION. (Который я расширю позже). Но когда я добавляю это, запрос завершается ошибкой. Имена таблиц и заголовки верны. Почему эта строка может привести к сбою запроса?

Кроме того, поддерживаются ли здесь условные операторы? Я хотел бы добавить ЕСЛИ (домен активен), ТО (запрос передачи)

пароль_запрос = \
         ВЫБЕРИТЕ имя домена ИЗ таблицы_доменов \
         UNION SELECT CONCAT("5500") AS gid, CONCAT("5500") AS uid, \
         CONCAT("/mail/dir/",'%d','/','%n') КАК домашний,Электронная почта как пользователь, Пароль как пароль \
         FROM users_table ГДЕ Email='%u' AND active=1;

Кажется, что каждый запрос работает только в том случае, если он возвращает переменные gid, uid, home, user и password.

Спасибо

Рейтинг:0
флаг cn

Решил проблему, выполнив следующие действия.

  1. Включил auth-deny.conf.ext, раскомментировав его в dovecot.conf.

  2. Измените auth-deny.conf.ext, чтобы использовать драйвер sql, и добавьте новый файл в качестве аргумента.

  3. в новый файл добавлен еще один password_query со следующим кодом, который возвращает Отрицать переменная

    пароль_запрос =
    ВЫБЕРИТЕ ('%u') КАК отклонить ОТ domain_table WHERE DomainName = '%d' AND active=0 ;

Это похоже на взлом, в логах написано Запрос пароля должен возвращать поле с именем «пароль». была причина сбоя аутентификации. Но это работает. У кого-нибудь есть лучший способ?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.