To je samozřejmě pravda, že by tam mělo být údajů co nejméně, aby nebylo cookie zbytečné velké. Moje zkušenost je taková, že pokud se jedná o menší aplikaci, která má cca do 20-ti rolí, tak uložit do claims id uživatele, jeho jméno pro zobrazování, ty role a případně něco málo dalšího by mělo být ještě ok. SessionAuthenticationModule také dělá to, že pokud by bylo cookie moc velké tak údaje automaticky rozloží do více cookie. Samozřejmě závisí na scénáři, pokud např. potřebujete, aby byla aplikace rychlá i na mobilu připojeného přes pomalá data, tak to bude hrát roli větší. Pro případy, kdy by bylo cookie moc velké, lze ve WIF postupovat tak, že se do claims dá opravdu jen to userID a při každém requestu se provádí tzv. claims transformation tj. že se podle ID z databáze dotáhnou ostatní údaje (a role). Koukněte se na ClaimsAuthenticationManager: http://msdn.microsoft.com/en-us/library/... Jednoduchý příklad byl také zde: http://wug.cz/praha/akce/521-Autentifika... (viz ClaimsTransformation.zip). Pokud by vadil ten jeden dotaz do db pro každý request, tak je to potřeba na základě toho ID nějak cachovat. Před přihlášením uživatele je možné pro dané ID cache vyprázdnit, aby uživatel dostal platná data. To, že se po změně práv musí uživatel odhlásil a znovu přihlásit většinou tolik nevadí.
|