Cum să te autentifici o singură dată într-o rețea WP Multisite

30 iul. 2015, 15:13:44
Vizualizări: 16.4K
Voturi: 3

Știe cineva un plugin bun care permite autentificarea o singură dată ca Super Admin WP-MS în rețea și să poți comuta între site-uri fără a fi nevoie să te reconectezi la fiecare rețea sau site individual?

Mulțumesc

0
Toate răspunsurile la întrebare 3
12

Aceasta are legătură cu domeniul cookie-urilor. Acesta este setat pentru fiecare domeniu, ceea ce împiedică autentificarea la nivel de rețea. Puteți încerca să setați constanta COOKIE_DOMAIN în fișierul dvs. wp-config.php.

De exemplu, setarea acesteia ca fiind goală, ceea ce previne WordPress să modifice domeniul cookie-urilor pentru fiecare site:

define( 'COOKIE_DOMAIN', '' );

Poate că aveți nevoie să setați și alte constante, pentru a funcționa.

define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '' );
define( 'SITECOOKIEPATH', '' );

Nu mă întrebați despre dezavantaje, pentru că nu sunt foarte sigur în acest sens.

Sau puteți seta un domeniu specific pentru cookie-uri pentru toate site-urile:

define( 'COOKIE_DOMAIN', 'example.com' );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );

Probabil că este o idee bună să setați și un hash unic pentru cookie-uri:

define( 'COOKIEHASH', 'unique_cookie_hash_string' );

În cazul în care aveți alte instalări WordPress care folosesc același domeniu pentru cookie-uri.

Actualizare:

De pe pagina GitHub a WP Multi Network am obținut asta:

Autentificare Unică (Single Sign-on)

Puneți ceva similar cu acesta în wp-config.php pentru a partaja cookie-urile pe toate site-urile și rețelele.

// Cookie-uri
define( 'COOKIEHASH',        md5( 'yourdomain.com' ) );
define( 'COOKIE_DOMAIN',     'yourdomain.com'        );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH',        '/' );
define( 'SITECOOKIEPATH',    '/' );
define( 'TEST_COOKIE',        'thing_test_cookie' );
define( 'AUTH_COOKIE',        'thing_'          . COOKIEHASH );
define( 'USER_COOKIE',        'thing_user_'     . COOKIEHASH );
define( 'PASS_COOKIE',        'thing_pass_'     . COOKIEHASH );
define( 'SECURE_AUTH_COOKIE', 'thing_sec_'      . COOKIEHASH );
define( 'LOGGED_IN_COOKIE',   'thing_logged_in' . COOKIEHASH );

Din câte se pare, sunt lucruri generice din WordPress, nu specifice unui plug-in, așa că ar putea merita încercat. S-ar putea să nu fi făcut destule până acum.

30 iul. 2015 15:51:51
Comentarii

Asta nu a funcționat @ialocin. M-am autentificat în rețeaua mea WP Core/Base. Apoi, când am schimbat rețelele, am fost din nou prezentat cu ecranul de autentificare.

tammy tammy
31 iul. 2015 23:39:00

Păcat, am adăugat câteva informații suplimentare la răspunsul meu. Sper să te ajute, pentru că altfel, personal, nu pot să-ți spun mai multe. Restul trebuie să încerci și să cercetezi singur. @tammy

Nicolai Grossherr Nicolai Grossherr
2 aug. 2015 11:39:45

Ok, mulțumesc @ialocin -- voi încerca acele sugestii și voi reveni cu feedback

tammy tammy
3 aug. 2015 15:13:40

Testul #1 (codul de mai jos) -- nu a funcționat. M-am autentificat cu succes în rețeaua principală/core ca Super Admin. Apoi, când am schimbat rețeaua, mi s-a afișat ecranul de autentificare. define('COOKIE_DOMAIN', ''); define('ADMIN_COOKIE_PATH', '/'); define('COOKIEPATH', ''); define('SITECOOKIEPATH', '');

tammy tammy
3 aug. 2015 15:49:13

Testul #2 (codul de mai jos) -- nici acesta nu a funcționat. M-am autentificat cu succes în rețeaua principală/core ca Super Admin. Apoi, când am schimbat rețeaua, mi s-a afișat ecranul de autentificare. define('COOKIE_DOMAIN', 'my-main-wp-network-site.com'); define('ADMIN_COOKIE_PATH', '/'); define('COOKIEPATH', '/'); define('SITECOOKIEPATH', '/');

tammy tammy
3 aug. 2015 15:51:51

Probabil voi încerca să scriu propriul meu plugin pentru a rezolva această problemă.

tammy tammy
3 aug. 2015 15:53:13

O să fac asta @ialocin. Te voi anunța când voi avea un plugin scris și testat. Momentan este mai jos pe lista mea de priorități, așa că poate dura câteva săptămâni până ajung la el.

tammy tammy
3 aug. 2015 16:23:10

acestea sunt 2 rețele WP diferite? Sau o singură rețea de site-uri care rulează dintr-o singură bază de cod?

Alex Older Alex Older
3 aug. 2015 17:59:11

În prezent am peste o duzină de rețele, fiecare cu câte un site în interior @AlexOlder. Super Admin-ul are acces la fiecare rețea din instalarea mea WP. Așadar, vreau să mă autentific în WP o singură dată - adică pentru fiecare rețea de astăzi, mâine și în viitor. Sper că asta clarifică.

tammy tammy
3 aug. 2015 23:28:36

@tammy nu funcționează. Dacă ai o duzină de configurații de rețea diferite, nu există o modalitate sigură și securizată de a te autentifica pe toate simultan.

Dacă sunt o duzină de site-uri pe o singură instalare WP, atunci când te autentifici, ar trebui să fii autentificat pe întreaga rețea.

Alex Older Alex Older
5 aug. 2015 13:35:17

Exact @AlexOlder -- de aceea am nevoie să-mi scriu propriul plugin. Mulțumesc. Dacă scrii asta ca răspuns... îl voi selecta pentru a închide acest subiect.

tammy tammy
5 aug. 2015 15:32:00

Setările de pe Github funcționează bine pentru mine. Asta într-o SINGURĂ instalare multisite, ceea ce mă așteptam.

omega33 omega33
20 dec. 2022 00:46:31
Arată celelalte 7 comentarii
1

@tammy nu funcționează așa. Dacă ai o duzină de configurații diferite de rețea, atunci nu există o metodă sigură și securizată de a te autentifica pe toate simultan. Dacă sunt o duzină de site-uri pe o singură instalare WordPress, atunci când te autentifici, ar trebui să fii autentificat pe întreaga rețea.

– Alex Older, 5 aug la 10:35

17 aug. 2015 17:06:50
Comentarii

Mulțumesc @AlexOlder -- pentru că acesta este răspunsul la întrebarea mea...

tammy tammy
17 aug. 2015 17:07:51
2

Începând cu WordPress 4.2.4, o instalare standard multi-site cu Plugin-ul MU Domain Mapping 0.5.5 Development și Plugin-ul Multisite User Management 1.1, autentificarea prin domeniul principal va conecta un utilizator pe toate site-urile la care acesta este asignat (toate site-urile ca utilizator super admin). Totuși, utilizatorul trebuie să viziteze un site copil pentru a stabili cookie-ul și autentificarea, acest lucru va fi făcut automat. Din fericire, puteți include o soluție pentru a deconecta un utilizator de pe toate site-urile dacă orice site copil a fost vizitat în timp ce era autentificat pe domeniul principal. În prezent, am constatat că implicit nu vă deconectează de pe toate site-urile. Iată ce puteți adăuga în fișierul functions.php al temei dumneavoastră, care va distruge sesiunile utilizatorului pe întreaga rețea la deconectare:

function clear_session_on_logout() {

$current_user = wp_get_current_user();

// obține toate sesiunile pentru utilizatorul cu ID $user_id
$sessions = WP_Session_Tokens::get_instance($current_user->ID);

// avem sesiunile, le distrugem pe toate!
$sessions->destroy_all();
}
add_action('clear_auth_cookie', 'clear_session_on_logout');

De asemenea, este o idee bună să actualizați tema pe întreaga rețea sau temele utilizate pe site-urile copil pentru a vă autentifica și deconecta cu wp-admin/ al domeniului principal. Totuși, dacă aveți nevoie ca utilizatorul să se deconecteze de pe fiecare site copil "dacă a fost vizitat" în timp ce era autentificat pe domeniul principal, atunci cârligul implicit de deconectare va fi suficient.

Pentru informație: Dacă vă autentificați pe un site copil cu un cont Super Admin, acesta nu vă va conecta pe toate site-urile. Cred că acest lucru este intenționat și poate fi rezolvat ușor prin modificarea cârligului de autentificare și deconectare al temei pentru a utiliza întotdeauna domeniul principal. Dacă preferați să redirecționați înapoi către domeniul copil la autentificare și deconectare, se poate crea un cârlig simplu și pentru acest lucru.

7 aug. 2015 17:49:48
Comentarii

De asemenea, am găsit enervant meniul implicit "Site-urile mele" din bara de administrare wp-admin, care te trimite la wp-admin/ al site-ului copil, forțând orice utilizator (inclusiv super administratorul) să se autentifice din nou pe site-ul copil chiar dacă este deja autentificat pe domeniul principal (ciudat). Dacă vizitezi orice altă pagină în afară de directorul wp-admin/ al unui site copil, un utilizator va fi autentificat automat și bara de administrare va apărea. O soluție simplă în bara de administrare este să modifici linkurile din meniu să trimită către site_url(); al site-ului copil.

Zach Goldsmith Zach Goldsmith
7 aug. 2015 18:17:03

Mulțumesc @ZachGoldsmith pentru intervenție. Caut un sistem de single sign-on pentru toate network-urile mele... nu doar pentru site-urile din fiecare network. Așa că am început să scriu propriul meu sistem de autentificare pentru a realiza asta, deoarece nu am găsit unul care să facă asta.

tammy tammy
7 aug. 2015 22:17:32