AspNet.sk     Diskusné fóra     Vitajte v QuickStarts     ASP.NET     Silverlight     Ako môžem...? (en)     Class prehliadač Príklady chcem v ...   
Menu
Skip Navigation Links.
Späť na ASP.NET príručku

ASP.NET QuickStart Príručka

Ukladanie používateľských profilov

Čo je nové vo verzii 2.0

  • Používateľské profily - Používateľské profily v ASP.NET 2.0 vám umožňujú definovať a ukladať nastavenia pre jednotlivých používateľov, ktoré sa používajú v celej aplikácii. Nastavenia môžu byť uložené v anonymnom profile kým nie je používateľ prihlásený, a následne migrované do používateľského profilu prihláseného používateľa neskôr.
Sekcia hovorí o novej vlastnosti ASP.NET 2.0. O používateľských profiloch.

Webové stránky často potrebujú pohodlnú metódu na ukladanie používateľsky-špecifických údajov, ktoré sú používané v celej stránke. Používateľské profily umožňujú jednoduchý a ľahko použiteľný prístup na definovanie, ukladanie a vyberanie údajov viazaných na používateľa.

Používateľský profil je kolekcia vlastností, ktoré definujú informácie, ktoré chcete uložiť pre používateľov vašej stránky. Kolekcia je definovaná použitím jednoduchej XML syntaxe v konfiguračnom súbore (machine.config a/alebo web.config). V rámci Vašej stránky sa môžete odvolávať na informácie z používateľského profilu cez vlastnosť Profile. ASP.NET číta schému definovanú v konfigurácii a automaticky generuje triedu, ktorá je prístupná cez vlastnosť Profile na stránke. Ku jednotlivým vlastnostiam na Profile pristupujete presne tak, ako by ste pristúpili ku vlastnostiam ktorejkoľvek inej triedy.

Hoci najbežnejšie použitie používateľského profilu spočíva v ukladaní údajov pre prihlásených používateľov, dajú sa ukladať informácie aj pre anonymných používateľov. Samotné ukladanie informácií o anonymných používateľoch závisí na použití anonymnej identifikácie. Používateľské profily a anonymná identifikáciu spolupracujú pri aktivovaní vlastnosti Profile aj pre anonymných používateľov. Príklady zahrnuté v návode QuickStart ukazujú použitie používateľského profilu pre autentifikovaných používateľov aj pre neautentifikovaných používateľov.

Predtým, ako sa začne životný cyklus stránky, ASP.NET sa uistí, či je vlastnosť Profile prístupná pre použitie na stránke. Podobne na konci životného cyklu stránky, ASP.NET automaticky ukladá používateľský profil do dátového zdroja(ov). Podobne ako pri iných vlastnostiach ako Membership a Role Manager, používateľský profil bol navrhnutý na provider-based modeli. (Model založený na poskytovateľoch). Poskytovatelia abstrahujú fyzický dátový zdroj pre triedy a biznis-logiku vystavenú cez vlastnosť. Používateľské profily ASP.NET 2.0 prichádzajú s poskytovateľom pre Microsoft ™ SQL Server. Môžete vytvoriť svojich vlastných poskytovateľov a nastaviť ich, aby pracovali s vlastnosťou - používateľské profily. Stránky, ktoré používajú uvedenú vlastnosť zostanú pracovať bez zmeny aj keď použijete vlastných poskytovateľov.

Dodatočne ku vlastnosti Profile, používateľské profily poskytujú podporu pre administráciu profilov (aj autentifikovaných, aj anonymných) s pomocou nástroja ProfileManager. Medzi bežné úlohy, ktoré môžete vykonať s použitím nástroja na správu profilov patria:

  • Vyhľadávanie štatistických informácií o všetkých profiloch (autentifikovaných aj anonymných)
  • Zistenie počtu používateľských profilov, ktoré neboli modifikované počas zvolenej doby
  • Vymazávanie individuálnych profilov, ako aj vymazávanie na základe času poslednej modifikácie

Definovanie schémy profilu

Konfiguračný súbor v nasledujúcom príklade definuje Profile použitím vlastností, ako aj použitím skupiny vlastností. Vlastnosti sú definované použitím elementov <add> vo vnútri elementu <properties>. Skupina vlastností je pohodlný spôsob logického zlučovania viacerých vlastností. Skupinu vlastností definujete použitím elementu <group>. V ukážkovej schéme, skupina vlastností "AutomobilePreferences" zjednocuje dve dodatočné vlastnosti. Všimnite si, že elementy <group> nemôžu byť vnorené (čo znamená, že je podporovaná len jediná úroveň vnorenia pod elementom <properties>).

Ukážková schéma demonštruje flexibilitu, ktorá existuje pri definovaní typov dát vlastností profilu. Štandardne sa u vlastností predpokladá, že budú typu System.String. Samozrejme môžete definovať vlastnosť ľubovoľného typu, ktorý je prístupný aplikácii počas behu programu. Ukážková schéma zahŕňa definície pre System.Collections.ArrayList ako aj System.Drawing.Color.

Element <add> podporuje množstvo voliteľných atribútov okrem tých, ktoré sú zobrazené v príklade. Bežne vlastnosť používateľské profily serializuje vlastnosti buď ako string, alebo ako XML. Avšak nie všetky typy sú serializovateľné ako string, alebo XML fragmenty. Práve preto vlastnosť "PreferredBackgroundColor" má atribút SerializeAs, ktorý explicitne uvádza binárnu serializáciu. Vlastnosť "PricePoint" má atribút DefaultValue, ktorý definuje štandardnú hodnotu pre vlastnosť, ak nebola žiadna zvolená.

Vlastnosť "PreferredBackgroundColor" má atribút allowAnonymous, ktorý je nastavený na true. Štandardne sú vlastnosti používateľského profilu obmedzené pre autentifikovaných používateľov. Keď je atribút allowAnonymous nastavený na true, znamená to, že vlastnosť môže byť použitá na ukladanie informácií pre anonymných používateľov.

Profile schema in web.config
View Source

Anonymné profily

Profilová schéma ukázaná v poslednom príklade umožňuje ukladať preferovanú farbu pozadia aj pre prihlásených používateľov aj pre anonymných používateľov. Na ukážkovej stránke si anonymný používateľ môže zvoliť z niekoľkých farieb. Keď sa stránka znovu zobrazí, bude renderovaná použitím vybranej farby. Všimnite si, že ak vypnete browser a znovu spustíte príklad, výber farby sa zapamätáva. Dôvodom uvedenej vlastnosti je, že Anonymná Identifikácia je aktivovaná pre všetky príklady (štandardne je Anonymná Identifikácia vypnutá). Anonymná identifikácia automaticky generuje náhodné číslo pre používateľa a ukladá ho v cookie. Pri nasledujúcej návšteve sa identifikátor použije na rozlíšenie používateľa a na prístup ku jeho používateľskému profilu.

Na ukážkovej stránke, získavate a nastavujete farbu pozadia použitím syntaxe Profile.PreferredBackgroundColor. Štýl použitia vlastnosti Profile je totožný so štýlom prístupu ku vlastnostiam na ktorejkoľvek inej triede. V nasledujúcom príklade, stránka používa bežné konverzie dostupné v štruktúre System.Drawing.Color, pre získanie Profile.PreferredBackgroundColor.

VB Storing Profile data for anonymous users
Run Sample View Source

Autentifikované profily

V nasledujúcom príklade sa prihlásite ako autentifikovaný používateľ a nastavíte hodnoty pre všetky vlastnosti profilu. Keď prvýkrát spustíte príklad, budete na domovskej stránke, ktorá je prístupná aj pre anonymných aj pre autentifikovaných používateľov. Farba pozadia je nastavená na hodnotu, ktorú ste vybrali ako anonymný používateľ v predchádzajúcom príklade. Kliknite na odkaz, ktorý vám umožní vytvoriť nového používateľa. Odkaz sa nachádza v spodnej časti prihlasovacieho ovládacieho prvku. Zadajte používateľské meno a heslo a kliknite na tlačidlo, aby sta vytvorili nového používateľa. Po tom ako je nový používateľ vytvorený, kliknite na tlačidlo a pokračujte na stránku, ktorá zobrazuje vlastností profilu pre prihláseného používateľa.

Keď prvýkrát vidíte stránku so všetkými vlastnosťami profilu, všimnite si, že farba profilu, je nastavená presne tak, ako ste ju nastavili ešte ako anonymný používateľ. Dôvod je vysvetlený podrobnejšie v nasledujúcom príklade. Zatiaľ si všimnite, že môžete nastaviť hodnoty pre všetky vlastnosti profil. Tiež si všimnite že cena automobilu je nastavená na štandardnú hodnotu v schéme profilu.

Po vložení nových hodnôt kliknite na tlačidlo "Update Preferences". Keď sa stránka aktualizuje, zmeny vo vlastnostiach sa okamžite prejavia. Kliknite na odkaz logout aby ste odstránili autentizačný cookie z vášho počítača. Následne zatvorte prehliadač. Teraz, keď znovu spustíte príklad, budete požiadaný prihlásiť sa znovu. Po vložení prihlasovacích informácií a po samotnom prihlásení, si všimnite, že stránka presne zobrazuje informácie, ktoré ste zadali predtým. Ak kliknete na odkaz, ktorý vás vrátí späť na domovskú stránku, uvidíte, že domovská stránka používa meno a farbu pozadia, ktoré ste zadali v obrazovke nastavovania vlastností. Uvedené demonštruje, ako sa údaje používajú v zabezpečených aj nezabezpečených stránkach aplikácie. Na domovskej stránke sa farba pozadia a meno zobrazujú použitím údaju z anonymného profilu alebo z profilu prihláseného používateľa.

Podobne ako v predchádzajúcom príklade, ďalšia ukážka ukazuje, ako syntax Profile kopíruje syntax prístupu k vlastnostiam z VB.NET a C#. Všimnite si, že syntax pre prístup k vlastnosti vo vnútri skupiny vlastností, používa dve úrovne prístupu: Profile.AutomobilePreferences.PricePoint. Skupina vlastností jednoducho vystupuje ako prostredník. Kód pre manipuláciu Profile.AutomobilePreferences.CarModels ukazuje použitie System.Collections.ArrayList ako vlastnosť Profile. Reťazed, ktorý sa vpisuje do HTML by mala byť čiarkami-oddelená množina mien. Kód stránky preloží zoznam do kolekcie System.Array reťazcov predtým ako vloží hodnoty do vlastnosti Profile.AutomobilePreferences.CarModels. Keď pristupujete ku modelom áut, kolekciou Profile.AutomobilePreferences.CarModels prechádzate použitím štandardnej for-each syntaxe.

VB Storing Profile data for authenticated users
Run Sample View Source

Migrácia anonymných profilov do autentifikovaných profilov

Predchádzajúce príklady ukázali že farba pozadia pre anonymného používateľa bola prenesená aj pre prihláseného používateľa. Môžete si to overiť spustením príkladu nižšie. Ak ste už prihlásený, kliknite na logout v spodnej časti stránky. Na domovskej stránke, vyberte inú farbu zo zo zoznamu v ľavom hornom rohu stránky. Domovská stránka sa znovu zobrazí s použitím vybranej farby pozadia. Zároveň bude mať zobrazený text: "Hello Anonymous User", pretože vlastnosť meno na Profile je podporovaná len pre autentifikovaných používateľov. Prihláste sa na stránku použitím prihlasovacieho ovládacieho prvku. Všimnite si, že hneď ako sa prihlásite, farba pozadia stránky zobrazujúcej vlastnosti profilu zodpovedá výberu, ktorý bol vykonaný v čase, keď ste boli anonymný používateľ.

Na stránke vlastností profilu, kliknite na odkaz, ktorý Vás prenesie späť na domovskú stránku. Všimnite si, že na domovskej stránke je zobrazené meno založené na hodnote nastavenej vlastnosťou Profile.Name. Teraz, keď ste späť na stránke ako prihlásený používateľ, zvoľte inú farbu zo zoznamu a kliknite na tlačidlo update. Stránka sa znovu zobrazí s použitím novej farby pozadia. Ak následne kliknete na odkaz smerujúci na stránku vlastností profilu, uvidíte, že farba pozadia sa zachovala.

Keď ste späť na stránke vlastností profilu, kliknite na odkaz logout, ktorý Vás presmeruje späť na domovskú stránku. Všimnite si, že keď ste presmerovaný na domovskú stránku, váš predchádzajúci výber farby pozadia už nie je v platnosti. Vysvetlenie neplatnosti má dve príčiny. Potom, ako ste sa odhlásili, stránka vás považuje za anonymného používateľa, ktorý mal nastavenú inú farbu pozadia. Zároveň akýkoľvek výber farby, ktorý bol predtým spravený počas prihlásenia je vlastníctvom prihláseného používateľa a nie je dostupný pre anonymného používateľa. Keď sa anonymný používateľ prihlási , cookie, ktorá obsahovala automaticky vygenerovaný identifikátor je odstránená z prehliadača. Preto, keď sa prihlásite a znovu odhlásite, stránka Vás považuje za úplne nového anonymného používateľa. Interakcia medzi anonymnými a prihlásenými používateľmi vedie k potrebe migrácie dát z anonymných profilov do autentifikovaných profilov.

Vlastnosť Profile vystavuje udalosť nazývanú MigrateAnonymous. Môžete sa k nej prihlásiť vložením event handlera do global.asax nazvaného Profile_MigrateAnonymous. Udalosť sa spustí vždy, keď je dostupný anonymný identifikátor (buď, ako cookie , alebo v URL (cookieless ticket)), a aktuálny používateľ sa prihlási. V rámci reakcie na udalosť, môžete načítať Profile pre anonymného používateľa zavolaním metódy Profile.GetProfile a odovzdaním anonymného ID (ktorý je prístupný cez event args handlera). Keď máte referenciu na anonymný profil, môžete presúvať vlastnosti z anonymného do autentifikovaného profilu. Kód tiež vymazáva údaje o anonymnom profile z databázy. V poslednom kroku, kód zavolá metódu anonymnej identifikácie na odstránenie cookie, obsahujúci anonymný identifikátor. Všimnite si, že vývojári musia explicitne vymazať anonymný identifikátor zo žiadosti - ASP.NET nevymazáva identifikátor automaticky. Potom ako udalosť MigrateAnonymous skončí, ASP.NET pošle http hlavičku na odstránenie anonymného identifikátora z prehliadača. Počas ďalšej žiadosti sa udalosť už nespustí.

VB Migrating Profile data from an anonymous user to an authenticated user
Run Sample View Source

Definovanie vlastností profilu s vlastnou základnou triedou

Súbor web.config ukázaný v predchádzajúcej časti, zahŕňal atribút nazvaný inherits v elemente <profile>. Atribút informuje ASP.NET aby automaticky vygeneroval triedu pre vlastnosť Profile odvodením od vlastnej základnej triedy. V nasledujúcom príklade , meno triedy je UserDefinedProfileClass, ktorá sa nachádza v adresári App_Code. Vlastná trieda dedí z ProfileBase pretože automaticky generovaná trieda pre vlastnosť Profile musí mať ProfileBase vo svojej hierarchii dedičnosti. Akékoľvek verejné vlastnosti definované na vlastnej základnej triede sú viditeľné a použiteľne z vlastnosti Profile.

Spustite príklad a prihláste sa znovu. Na stránke vlastností, údaje zo zoznamu obsahujúceho preferencie na nekvalitné potraviny sú uložené použitím vlastnosti definovanej na vlastnej bázovej triede. Ako s ostatnými vlastnosťami Profile,ku preferenciám na jedlo sa pristupuje použitím štandardnej syntaxe vlastností: Profile.JunkFood.

Výhoda definovania vlastnej základnej triedy je v tom, že vyvojári môžu podchytiť volania set a get na implementáciu komplexnej biznis logiky v rámci ich kódu. V ukážkovom kóde, vlastná základná trieda definuje vlastnosť s použitím generických kolekcií. Definícia vlastností demonštruje minimálne požiadavky: Implementácie vlastností musia volať bázovú triedu, pretože je to práve bázová trieda (ProfileBase), ktorá zahŕňa serializačnú logiku pre dáta ako aj komunikáciu s poskytovateľom(mi).

Profile schema in web.config
View Source
VB Using a Custom Base Class
Run Sample View Source

Riadenie Automatického ukladania profilu

Technológia používateľských profilov sa automaticky rozhoduje, či je Profile zašpinený (zmenený). Hneď, ako sa Profile zmení, ProfileModule spustí metódu Save na konci každého volania stránky, čím uloží dáta použitím predvoleného poskytovateľa(ov). Technológia profilov môže spoľahlivo detekovať zmeny nad dátami len vtedy, keď sú typované buď ako System.String, alebo ako primitívny typ, ako System.Int16 , System.Int32, ... Ak profil obsahuje komplexnejšie údajové typy, štandardné správanie predpokladá, že Profile je zašpinený, a vždy sa pokúsi uložiť dáta. Aby ste optimalizovali výkonnosť, vývojár môže implementovať logiku v stránke, ktorá zistí, či je Profile naozaj neaktuálna Ak vývojár zistí, že sa profil nezmenil, môže sa napojiť na udalosť ProfileAutoSaving napísaním event handlera v global.asax. Parameter event args zahŕňa vlastnosť nazvanú ContinueWithProfileAutoSave. Ak vývojár nastaví vlastnosť na false, potom sa ProfileModule nepokúsi profil uložiť.

Spustite príklad a prihláste sa znovu, ak je to potrebné. Stránka je takmer totožná so stránkou vlastností profilu, ktorú ste použili skôr, pridané je len ďalšie tlačidlo. Ak editujete ktorékoľvek údaje z profilu, a následne kliknete na tlačidlo, ktoré odvolá automatické ukladanie, keď sa stránka znovu zobrazí, budú zobrazené staré hodnoty vlastností. Príklad kódu ukazuje prihlásenie sa k udalosti ProfileAutoSaving v global.asax a odvolanie ukladania, ak bola nastavená vlastnosť v kolekcii HttpContext.Items. metóda reagujúca na udalosť button click na stránke nastaví uvedený prvok na indikáciu, že automatické ukladanie má byť odvolané.

Ak chce vývojár nastaviť aby sa ProfileModule nepokúšal automaticky ukladať profil pri každom obnovení stránky, automatické ukladanie môže byť vypnutá nastavením atribútu automaticSaveEnabled v elemente <profile> na false.

VB Controlling Automatic Profile Saves
Run Sample View Source

Vymazanie profilu

Po čase, počet profilových dát pre stránku narastie, najmä na stránkach, ktoré používajú anonymné profily. Trieda ProfileManager poskytuje sadu metód na vymazávanie údajov o profile. Príklad ukazuje použitie ProfileManager.DeleteProfile na vymazanie profilu aktuálne prihláseného používateľa. Keď spustíte príklad, najprv sa prihláste. Keď ste prihlásený, môžete kliknúť na tlačidlo delete na odstránenie údajov o používateľskom profile aktuálneho používateľa. Budete automaticky presmerovaný na stránku vlastností profilu. Všimnite si, že všetky vaše údaje o profile boli vymazané a budete musieť zadať nové údaje. do HTML formy.

V produkčnom prostredí budete bežne používať ProfileManager počas plánovane údržby. Na príklad, môžete vytvoriť dennú dávkovú úlohu, ktorá spustí konzolovú aplikáciu používajúcu ProfileManager na vymazanie profilov, ktoré boli neaktívne viac ako 30 dní. Od doby, keď sú aj v prostrediach mimo ASP.NET podporované používateľské profily (na príklad: konzolová aplikácia alebo servisná aplikácia), môžete vytvárať aplikácie orientované na operácie s použitím triedy ProfileManager.

VB Deleting a Profile
Run Sample View Source
Microsoft .NET Framework SDK QuickStart Tutorials Version 2.0
Copyright © 2005 Microsoft Corporation. All rights reserved.
Preklad do slovenského jazyka - Copyright © 2005 - 2007 www.aspnet.sk, www.qsh.sk
Pošlite komentár k tejto stránke
Copyright © 2002 - 2008 Chastia, spol. s r. o., Igor Stanek, Designed by Lacino
Portál je hostovaný na serveroch firmy Quantasoft - www.qsh.sk.