Úgy tűnik joernchen nem hagyott fel a Rails túrásával, a munka pedig meghozta gyümölcsét, már vagy tíz perce vigyorgok:
A történet ott indul, hogy a MySQL annyira típusérzéketlen, hogy a 0="valami" (integer vs. varchar) számára egy igaz kifejezés. Ez persze már önmagában gyönyörű, de lássuk a gyakorlati alkalmazást!
Tegyük fel, hogy egy RoR app valahogy így ellenőrzi a jelszócseréhez kiküldött egyszeri véletlen token helyességét:
def reset user = User.find_by_token(params[:user][:token]) if user #reset password here end end
Kapisgáljátok? A Rails elfogad típusos XML adatstruktúrákat, vagyis egy HTTP kérésben megmondhatjuk hogy az alkalmazás egy adott paramétert milyen típusúként értelmezzen - nincs tehát más dolgunk, mint egy integer típusú 0-t beküldeni, és tárulj Szezám:
POST /user/password/reset [...] Content-Type: text/xml <user><token type="integer">0</token>[...]</user>
A legjobb az egészben, hogy ez mindkét szoftver esetében feature nem pedig bug, így nem valószínű, hogy a közeljövőben hivatalos megoldást látunk a problémára. A GitHub vadiúj keresője azt hiszem már izzad...
Elkerülő megoldásként a XML kérések letiltása segíthet (talán).
synapse · http://www.synsecblog.com 2013.02.06. 20:16:17