Egy modul fejlesztése közben döbbentem rá, hogy a session kezelés az ajax hívásoknál nem működik, azaz csak anonymous userként jelenik meg a drupalban a hívás.
Ezzel kapcsolatban találtam egy drupal_get_token() függvényt, ami erre lehet megoldás.
1. Szerver oldalon generálok az aktuális időpont meg valami salttal egy tokent és azt lementem egy $_SESSION változóba.
2. Ezt a tokent kiíratom a kliens oldalra, mint javascript változót:
3. Ajax hívásnál indítok paraméterként hozzácsapom a javascript változó értékét az átküldött paraméterekhez.
4. A hivott oldal először lefuttatja a drupal inicializálást, majd ellenőrzi, hogy a küldött token megtalálható-e a {sessions} tábla valamelyik rekordjában a session mezőben.
Ha igen, akkor a megadott user hívta az oldalt, különben anonymous.
A lekérdezés visszaadja a user uid-ját, aminek alapján betöltöm a user_load() fv-nyel a usert és leellenőrzöm a jogosultságait a user_access() fv-nyel.
Szerintetek működik-e?
Itt van egy kis példakód hozzá:
http://www.fzolee.hu/framework/biztonsagos_ajax_hivasok_hasznalata_drupa...
drupal session
A drupal a session adatokat adatbazisban tarolja, es onnan szedi elo.
Az AJAX hivasok kiszolgalasat is a a drupal vegzi, akkor ugy mukodik, mintha egy tetszoleges oldalt toltenel le.
---
http://drupalaton.hu
Sajnos az ajax hívás anonymousként jelenik meg a drupal oldalon
Igen tudom, hogy a {sessions} táblában tárolja, a session-t, de valamiért az ajax hívás esetén a kiszolgáló oldalon ha a drupal rendszert inicializálom a drupal_bootstrap() függvénnyel, a $_SESSION változóban nem jelennek meg azok a változók, amely az oldal generálásakor korábban a sessionbe bekerültek.
Fábián Zoltán
www.fzolee.hu
próbáld ki: <?php
próbáld ki:
Szerintem ott rontottad el, hogy kiadtál egy session_start() hívást az elején tök feleslegesen.
Egyébként továbbra se tartom jó ötletnek, hogy ez egy külső fájlba teszed és nem egy callback függvényt írsz rá. (lásd hozzászólásom a bejegyzéshez)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Igazad van
Igaz a session_start bolondította meg. A callback függvényt is megnézem.
Fabio
Fábián Zoltán
www.fzolee.hu
Ez kell neked:
http://benbuckman.net/tech/10/06/drupal-fix-ajax-and-secure-pages
Lippai Ádám
young element