Diskuze: Vrátenie novej identity
Tvůrce
Zobrazeno 15 zpráv z 15.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
Proto zásadně do Identity ukládám jen ID uživatele, které se nemění,
nic víc 
Problém je, že se ty údaje ukládají do session, takže pokud chceš hned
vidět změnu, musíš to do session znovu nacpat, na což bude asi nejlepší
uživatele odhlásit a znova přihlásit (dobrá blbost co?).
Tohle by mělo fungovat:
$this->user->getIdentity()->property = 'propertyValue';
Pokud to děláš jinde než v presenteru (třeba v nějaké komponentě), tak si do ní injectni Nette\Security\User a přes getIdentity() získej identitu, kde pak jednoduše můžeš měnit hodnoty.
V tom prípade sa ukrytiš o používanie triedy user
Nechápu, co tím myslíš. Třídu user stejně používám jen pro získání jeho ID a zjištění, jestli je přihlášen. Víc nepotřebuju - seženu si to z databáze.
A není to trochu overkill při každém requestu, kde potřebuješ něco od přihlášeného uživatele, sahat do databáze? Jasně, je to většinou jen jeden dotaz, ale určitě je úspornější to mít v identitě a tahat to ze session. A tím spíš, když ti tam chodí hodně lidí a když máš (a to jako že bys měl mít) na každé stránce vypsané minimálně username nebo email, aby uživatel viděl, že je přihlášený a pod jakým účtem.
No jestli je pro tvou databázi problém udělat jeden jednoduchej SELECT
podle primárního klíče, tak je asi někde chyba na tvé straně 
Když pak tomu uživateli administrátor změní email, řešíš to jak? Tomu
uživateli se to musí ihned projevit, takže musíš někde držet informaci,
že to ten admin upravil a musíš toho uživatele znovu přihlásit. Kde tuto
informaci uchováváš?
Pozn.: nemusí jít zrovna o mail, ale o jakoukoliv jinou informaci, kterou zobrazuješ na každé stránce. Jde mi o to, jak má aplikace poznat, že se danému uživateli ta informace změnila a musí se teda znovu do té session uložit.
Zkus si přečíst, co sem napsal výše.
Odhlašovat a znovu přihlašovat
uživatele fakt není třeba.
A problém pro databázi to není, ale až se někdy dostaneš k projektu, kde budou v jednu chvíli ke stránkám přistupovat desetitisíce lidí a budeš mít server třeba na jiném fyzickém serveru než kde ti běží PHP, tak ten jeden select může ovlivnit načítací čas klidně o sekundu, což je fakt hodně, ikdyž se to nezdá. Proč myslíš, že se dělají ORM, které pokudmožno posílají do databáze jenom obyčejné jednoduché selecty bez jakýchkoliv joinů a až pak si to v PHP spojí dohromady?
Možná je to jen má neznalost - ale když tu informaci (třeba email) změní uživatel třetí strany (třeba admin), jak pak tomu přihlášenému uživateli přepíšeš tu informaci v session?
S tvojí myšlenkou ohledně ORM nesouhlasím. ORMka nemají s rychlostí nic společného. Nabízejí odstínění od databázové vrstvy, určitou abstrakci a spolehlivost ohledně přenášených dat oboumi směry. A to právě na úkor rychlosti...
Vetsi blbost jsem asi v zivote necetl.. tedy poud to nebyla ironie...
ORMka jsou ve velkem poctu stejne rychle jako kdyz to napises rucne a ve velkem neskutecne pomalejsi, nez kdyz to napises rucne, protoze jim proste chybi semantika a nevi co chces udelat. Take tedy hode zalezi na tom jak napises dotaz v tom danem jazyce.. a je jedno jestli je to LINQ, nebo treba DQL..
Co me ale pobavilo jeste vic je to, ze pises, ze daji jen jednoduche dotazy a pospojuji si to az v aplikaci,.. to je asi jeste mnohem vetsi bullshit, nez to prvni.. Pominu zde, že se tu bavíte o PHP, které to pospojovani asi udela jen tak milionkrat pomaleji a sezere pri tom 40GB pameti, vzhledem k tomu, jak je vse v pameti v PHP realizovano pres hashtable a jak PHP totalen neumi zachazet s pameti a povim tu, ze i v jazyce, co patri do roku 2000+ je todle znatelne pomalejsi., musis si posilat data navic,tvuj jazyk musi skakat poo pameti, navic ty jednotlive data nema v pameti tak optimalizovane ulozene jako DB server, takze mas silenej cache miss ratio a tunu dalších blbosti...
a proto právě ORM obaluješ ještě nějakou dal vrstvou, třeba repozitáře a query objecty, aby když ti dojde k výkonnostnímu problému, aby si jen vevnitř mohl vyměnit použití ORM za něco jiného,,,. třeba přímý SQL command, nebo za volání stored procedury.
chlapci myslíš že to vôbec nesúvisí s témou ... Mohli by sme sa vrátiť k téme ?
Napadlo ma ešte jedno riešenie ak by som využil:
$this->user->getIdentity()->property = 'propertyValue';
tak pri editácii užívateľa adminom by som ho odhlásil ale nette túto možnosť nemá aspoň som ju nenašiel ...
Stále aktuálne
Zobrazeno 15 zpráv z 15.
