Drupal bejelentkezés több aldomainen.

Kis kihagyás után folytatnám egy újabb villám Drupal tippel:

Tegyük fel, hogy készítünk egy új oldalt, legyen: example.com. Ha megfelelőek a web és dns szerver beállítások, akkor új oldalunk elérhető lesz mind a www előtaggal, mind anélkül, tehát ezeken a címeken: http://example.com és http://www.example.com. Ez eddig jó hír, de ha meglátogatjuk az oldalt az egyik formában, bejelentkezünk, majd átváltunk a másik verzióra, ott bizony nem leszünk belépve. Ez viszont zavaró, mert a később ránk mutató külső linkek valószínüleg mindkét verziót használni fogják. A felhasználók akik meg ezekről a külső oldalakról jönnek, nem fogják érteni, hogy miért vannak néha belépve, néha meg nem.

Belepillantva a .htaccess fájlba, azonnal láthatjuk a megoldást: a látogatókat át kell irányítani, úgy hogy mindig csak az egyik verziót használják. Ez mindössz két sor roppant egyszerű átírást jelenti a .htaccess fájlban, a művelethez pedig bőséges információ található megjegyzés formájában, erre nem is térnék ki.

De van egy másik lehetőség is, amelyet a settings.php rejt. Ebben a fájlban van elrejtve a $cookie_domain beállítás, amelyet ha nem állítunk be a drupal automatikusan kitalál. És pont itt jön be a gond: néha example.com -nak néha www.example.com-nak fogja kitalálni. Viszont ha mi fixen beállítjuk így:

<?php
$cookie_domain
= '.example.com';
?>

akkor mindkét esetre érvényes sütit állít elő majd a kód. A lényeg a pont az emaple.com előtt, amely annyit jelent hogy minden .example.com végű un. hostra érvényes a süti.

Egy átlagos weboldalnál ez a módszer nem jobb a .htaccess-es megoldásnál. De ha például egy oldalcsoportot készítünk, ahol különböző aldomaineken (a.exmaple.com; b.example.com, ...) különböző drupal telepítések szolgálnak ki más-más tartalmat, de közös felhasználó adatbázissal, akkor ezzel a megoldással már meg is valósítottuk az un. Single Sign On-t, amikoris egyszer kell belépni, és a felhasználó minden aloldalon belépve marad.

Most látom, nem is lett ez annyira rövid tipp, de remélem hasznos lesz néhány olvasónak.

20 hozzászólás

Köszi szépen, erre már

Köszi szépen, erre már kerestem megoldást régebben is, csak lusta voltam eléggé utána nézni :D, de most szembejött a megoldás.

Kis módosítás, nagy eredmény

Kis módosítás, nagy eredmény - végeredményben ez a Drupal előnye. Ha kicsit nagyobb hangsúlyt adsz az SSO-nak, talán többen ugranak majd rá. ;)

Szia! A kérdésem az lenne,

Szia!

A kérdésem az lenne, hogy én is ilyen honlapot fejlesztek épp, ahol aldomainon külön drupalok lennének feltelepítve.
Hogy csinálom meg azt, hogy ugyanazt az adatbázist használják. a telepitésnél ugyanazt az adatbázist adom meg?, nem irja felül vagy bármi a már ott más aldomainon telepitett drupal adatbázisát.
pl. valami.hu -n van az alapadatbázis
s azt szeretném, hogy a elso.valami.hu aldomain-on is ezt az adatbázis használja, akkor csak ugyanazt az adatbázis táblaelőtagot kell megadnom a telepitésnél?

Nagyon köszönöm a választ!

Másold át a settings.php

Másold át a settings.php fájl-t a valami.hu-ról az elso.valami.hu-ra. Így ugyanazt az adatbázist fogják használ, minden tábla közös lesz. Gyakorlatilag az egyik site, a másik másolata lesz. Ezt szeretnéd?

Szia! Nem. Már rátaláltam a

Szia!

Nem. Már rátaláltam a Multisite beállításra. Ahol többsite-ot tudok külön kezelni. De lehet egyszerűbbet irsz.

Nekem arra van szükségem, hogy van 2 drupal-om.
Van egy fő, ami a főkönyvtárban van, itt regisztrálnak az emberek, ennek van egy felhasználó adatbázisa. Azt még nem tudom, hogy a felhasználói táblák melyikek. Gondolom a users, vagy más táblába is menti a drupal?
Mert most a multisitenál megkell osztani pár táblát.

Tehát a másik site egy közösségi oldal lenne, de ugyanazok a felhasználók használnák mint a főoldalt,
igy a bejelentkező felületen ott is betudjanak lépni, s ha beléptek, akkor minden oldalon belegyenek lépve.

Ha bármiben tudsz segiteni, megköszönöm.

Pontosan azt szeretném

Pontosan azt szeretném megvalósítani, amit irtál fentebb:

különböző aldomaineken
(a.exmaple.com; b.example.com, ...) különböző drupal telepítések szolgálnak ki más-más tartalmat, de közös felhasználó adatbázissal.

egyszer kell belépni, és a felhasználó minden aloldalon belépve marad.

-- De most mindkét weboldal külön felhasználói adatbázissal rendelkezik.

Ha bármiben tudsz segiteni, nagyon megköszönöm.
üdv: CHi

Tehát két site van különböző

Tehát két site van különböző tartalommal, de közös felhasználkkal. Ez a multisite telepítés, úgy hogy megosztasz néhány táblát. Nézz bele a settings.php-be, pont azt a példát hozza fel ott is. Ezeket a táblákat kell megosztani: users, sessions, role, authpath.

Ha pedig különböző domain-en is vannak a siteok, akkor javaslom ezt:
http://drupal.org/project/singlesignon

Beállítottam az aldomain

Beállítottam az aldomain mappájának a multisite mappát, s a következő hibaüzenetet kaptam:
Erre valaki azt mondta, hogy kommentezzem ki az egész .htaccess fájlt. De biztos jó megoldás ez erre?
Beállítottam a $cookies session-nak a .domain.hu-t de a multisite-nál a könyvtárnév ugye www.-vel kezdődik, s ezért nem jelenitheti meg. Te hogyan oldottad ezt meg az aldomain-os verziódnál?
Előre is köszönöm:

Access forbidden!
You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.

If you think this is a server error, please contact the webmaster.
Error 403

Átirtam a multisite mappában

Átirtam a multisite mappában lévő settings.php-ben,
$db_prefix = array(
'default' => 'alapsite_',
'users' => 'kozosseg_',
'sessions' => 'kozosseg_',
'role' => 'kozosseg_',
'authmap' => 'kozosseg_',
);

De még mindig, a közösségi oldalon is a kozosseg_users táblába irja a felhasználót. S nem az alapsite-ba. Tehát nem abba a táblába ir.

Valamit nem jól csináltam?
Előre is köszi.

JUHIIII! Sikerült.. Nem

JUHIIII!
Sikerült..
Nem vettem ki az alatta lévő $db_prefix = kozosseg_
sort!

Annak irom aki ugyanebbe a kérdésben keres:
1. Tehát feltelepitettem a 2 drupalt.
Az elsőt a főkönyvtárban, aztán a másodikat a mutisite könyvtárban, úgy hogy a setting.php-ban először az új
táblanévvel installoztam: $db_prefix = kozosseg_;
majd miután feltelepitette a drupalt a közösségi oldalt, átirtam a settings.phpnál a $db_prefix = array(
'default' => 'kozosseg_', // az új tábla név
// amelyik táblákat megosztod
'users' => 'alapsite_',
'sessions' => 'alapsite_',
'role' => 'alapsite_',
'authmap' => 'alapsite_',
);

köszönöm az eddigi segitségedet!

Szia! A kérdés a következő.

Szia!

A kérdés a következő. amikor megcsinálom a multisite beállítást, s az aldomainnak beállítottam a multisite könyvtárát. www.alapsite.hu/kozosseg
Ez esetben, ha megnyitom az aldomaint:
http://kozosseg.alapsite.hu
akkor ez a hibaüzenet fogad:
Mit tudok, csinálni hogy elérjem az aldomain cimről az oldalt.
Mert eddig úgy csináltam, hogy az aldomain mappájában lévő .htaccess összes sorát kikommenteztem. S úgy behivta. Tudsz segiteni ebben?

Access forbidden!
You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.
If you think this is a server error, please contact the webmaster.
Error 403

Az apache-ban a két host jól

Az apache-ban a két host jól van beállítva? Ha csak egy-egy idnex.php fájl van ott print "hello"-val, az működik?

Szia! Hát a drupal

Szia!

Hát a drupal Multisite-ot csináltam.
Ott csak egy settings.php-m van a Multisite könyvtárban, s egy files könyvtár.
Csak egy index.php van a fődrupal könyvtárban.
S úgymint az install php-t, gondolom a symlink ezt hivja meg, s a settings.php alapján hozzalétre az oldalt, az ott megadott adatbázis szerint.

Másoljak be a multisite mappába is egy index.php-t?

Nem pontosan értem, de

Nem pontosan értem, de index.php-t nem kell másolnod, az bíztos! :)

Drupal nélkül érd ek ezt:
x.host.hu és y.host.hu cím a szerveren ugyanarra a könyvtárra mutasson, ha oda beteszel egy index.php-t, akkor mindkét esetben fusson le. Ha ez megvan, akkor lehet drupal-t telepíteni és multisite beállításokkal játszani.

Sziasztok! Egy oldalamnak 2

Sziasztok!

Egy oldalamnak 2 domain neve van, mert 2 nyelvű, és url prefix helyett domain név alapján szelektáljuk a nyelvet.
Azt szeretném, hogy ha az egyik nyelven bejelentkezek, és a másik nyelvre váltok (másik domainre ugrik az oldal) akkor ne kelljen újra bejelentkeznem. A fenti post alapján a $cookie_domain = nek kéne több domain megadnom. Lehet ilyet? Ha igen, hogyan? Nem találtam infót ilyesmiről. Vagy más megoldás járja?

Egy cookie nem lehet érvényes

Egy cookie nem lehet érvényes több domain-re, biztonsági megfontolásokból, így a $cookie_domain önmagában nem lesz elég. Neked egy Single Sign On megoldás kell, keress egy megfelelő modult, több is van.