Sabtu, 16 Mei 2009

Symfony Multiple Login

Multiple Login adalah sebuah istilah yang mengartikan sekali login di sebuah aplikasi maka otomatis login di aplikasi yang lain...

Sebagai contohnya, aplikasi-aplikasi milik yahoo.com dan google.com, misalkan bila kita telah login di mail.google.com maka secara otomatis kita telah login juga di blogspoot.com, google.com/analytics, google.com/reader di aplikasi google lainya begitu juga kalau logout di salah satu aplikasi tersebut akan otomatis logout di semua aplikasi.

Dengan Symfony Framework Feature tersebut telah di milik, dan ditulisan ini kita akan membahas cara membuat itu, Sebelum nya gw kasih tau dulu versi Symfony Framework yang gw pake adalah 1.2



Skenario kasus-nya seperti ini... di projek kita memilik tiga aplikasi, sebut saja APLIKASI A, APLIKASI B dan APLIKASI C

dimana bila :
  1. APLIKASI A login maka otomatis APLIKASI B login sebaliknya juga bila salah satu logout maka APLIKASI A dan APLIKASI B akan logout juga
  2. APLIKASI C login maka APLIKASI A dan APLIKSI B tidak otomatis login


Cara membuatnya seperti di bawah ini, yg di jelaskan disini adalah configurasi nya saja
dan cara untuk membuat Autentifikasi Login nya bisa di liat di
http://www.symfony-project.org/askeet/1_0/en/6.



1. buka file factories.yml pada APLIKASI A dan APLIKASI B, sebagai contoh:

alamat di APLIKASI A
symfony/apps/aplikasi_a/config/factories.yml

alamat di APLIKASI B
symfony/apps/aplikasi_b/config/factories.yml



kemudian tambahkan baris di bawah ini

all:
storage:
class: sfSessionStorage
param:
session_name: grupSatu



2. buka file factories.yml pada APLIKSI C, sebagai contoh:

alamat di APLIKASI C
symfony/apps/aplikasi_c/config/factories.yml


kemudian tambahkan baris di bawah ini

all:
storage:
class: sfSessionStorage
param:
session_name: grupDua


3. jangan lupa di symfony cc


penjelasannya:

all: -> sebuah statemen yg menyatakan kalau konfigurasi di dterapkan di semua enviroment (production, develop, test)
storage: -> konfigurasi ini di symfony istilah nya storage
class: sfSessionStorage -> nama class symfony untuk menyimpan session
param:
session_name: grupDua -> nama session dari aplikasi




Jadi pada kasus di atas APLIKASI A dan APLIKASI B mempunyai session_name yang sama, sedangkan APLIKASI C memiliki session_name yang berbeda..


mudah-kan!!!!!


Kalau yg barusan saya jelasakan di atas asumsinya adalah semua Aplikasi berada di domain nya sama, misalkan APLIKASI A, APLIKASI B dan APLIKASI C berada di
domain http://www.domainsaya.com, skrg bagaimana kalau setiap aplikasi mempunya sub domain yang berbeda, misalkan

APLIKASI A disubdomain http://appA.domainsaya.com
APLIKASI B disubdomian http://appB.domainsaya.com
APLIKASI C didomain http://www.domainsaya.com

jangan khawatir Symfony sudah menghandle itu, caranya konfigurasi-nya mirip dengan yang di atas, tapi ada penambahan sedikit, dibawah ini adalah konfigurasinya:

pada APLIKASI A dan APLIKASI B configurasi nya menjadi begini

all:
storage:
class: sfSessionStorage
param:
session_name: grupSatu
session_cookie_domain: .domainsaya.com




dan pada APLIKASI C

all:
storage:
class: sfSessionStorage
param:
session_name: grupDua



penjelasannya, pada APLIKASI A dan APLIKASI B cukup tambahkan parameter session_cookie_domain: .domainsaya.com itu artinya session_name yang bernama grupSatu akan di kenali di APLIKASI A dan APLIKASI B.


oke.... semoga berhasil....

5 komentar:

  1. mas Dendie,

    saya mau tanya ini kan multiple loginnya masih dalam satu engine symfony. bagaimana kalau loginnya yang satu menggunakan symfony lalu satunya lagi tidak menggunakan symfony,

    BalasHapus
  2. klw boleh tau yang satu laginya login mengunakan apa ??

    BalasHapus
  3. login yang satunya menggunakan php biasa, jadi sebelumnya sudah ada aplikasi php, saya mau migrasi aplikasi yang lama ke symfony tapi untuk saat ini tidak semua modul yang di migrasi ke symfony. jadi aplikasi yang lama masih tetap dipakai. kalau seperti itu bagaimana cara menggabungkannya... thanks

    BalasHapus
  4. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  5. saya belum mencoba.. tapi kalau loginnya dapat saling dikenali antara symfony dan php sepertinya bisa, caranya adalah pada saat login menggunakan php biasa sekalian buat cookie yang namanya sama dengan session_name yang di tulis pada factories.yml pada aplikasi symfony framework.

    BalasHapus