Puncte:0

Dovecot SQL parola_interogare UNION

drapel cn

Am tabele separate pentru utilizatori și domenii. Când un domeniu este marcat ca neactiv, vreau ca toți utilizatorii acelui domeniu să eșueze autentificarea.

Această interogare funcționează bine.

interogare_parolă = \
         SELECTARE CONCAT("5500") AS gid, CONCAT("5500") AS uid, \
         CONCAT("/mail/dir/",'%d','/','%n') CA acasă,E-mail ca utilizator, Parolă ca parolă \
         FROM users_table WHERE Email='%u' AND active=1;

Acum încerc să adaug o verificare pentru a vedea dacă domeniul este marcat ca activ. Adăugând SELECTează DomainName FROM domains_table UNION. (Pe care îl voi extinde mai târziu) Dar când adaug acest lucru, interogarea eșuează. Numele și anteturile tabelelor sunt corecte. De ce această linie ar cauza eșuarea interogării?

În plus, sunt susținute aici declarațiile condiționate? Aș dori să adaug IF (domeniul este activ) THEN (treceți interogarea)

interogare_parolă = \
         SELECTează DomainName FROM domains_table \
         UNION SELECT CONCAT("5500") AS gid, CONCAT("5500") AS uid, \
         CONCAT("/mail/dir/",'%d','/','%n') CA acasă,E-mail ca utilizator, Parolă ca parolă \
         FROM users_table WHERE Email='%u' AND active=1;

Fiecare interogare pare să funcționeze numai dacă returnează variabilele gid, uid, home, user și parolă.

Mulțumiri

Puncte:0
drapel cn

A rezolvat problema făcând următoarele.

  1. S-a activat auth-deny.conf.ext prin anularea comentariului în dovecot.conf

  2. Schimbați auth-deny.conf.ext pentru a utiliza driverul sql și a adăugat un fișier nou ca arg.

  3. în noul fișier a adăugat o altă parolă_interogare cu următorul cod care returnează a nega variabil

    interogare_parolă =
    SELECT ('%u') AS deny FROM domain_table WHERE DomainName ='%d' AND active=0 ;

Acest lucru pare un pic de hack, în jurnalele scrie Interogarea parolei trebuie să returneze un câmp numit „parolă” a fost motivul pentru care auth eșuează. Dar funcționează. Are cineva o cale mai bună?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.