MVC prichádza s ActionFilter Na dosiahnutie autentifikácie identity Asp.NET vo WebForm nám Microsoft poskytuje tri spôsoby, z ktorých najčastejšie používaným je autentifikácia cez formulár, ktorú je potrebné nakonfigurovať s príslušnými informáciami. Napríklad nasledujúce konfiguračné informácie:
Znamená to, že naša prihlasovacia stránka je Login.aspx, predvolená stránka po úspešnom prihlásení je Default.aspx a naše používateľské informácie používajú dva spôsoby: overovanie a šifrovanie. A najdôležitejšie je, že musíme napísať autorizačný spôsob (autorizácia nižšie musí byť napísaná, inak je zbytočné používať len autentifikáciu cez formuláre a potom nastavovať relevantné atribúty), zamietnuť všetkých anonymných používateľov a normálne pristupovať len prihlásení používatelia. Potom nastavíme tlačidlo prihlásenia, aby do cookie zapísalo používateľské meno (teda spustilo FormsAuthentication.SetAuthCookie(name, false); To je všetko. 0 V Asp.Net MVC môžeme tiež použiť autentifikáciu cez Formy, ale ak to urobíte vo WebForme, nebude to fungovať. Napríklad nakonfigurujete informácie takto:
V Login.aspx si nastavíte prihlásenie, aby ste spustili prihlásenie v AccountControllere, kde je prihlasovací kód:
Po tomto zistíte, že vaše prihlásenie nebude vykonané. Aký je dôvod? Prečo rovnaké nastavenie nefunguje v MVC? Dôvodom je, že mechanizmus je iný, pretože nastavíte autorizačný spôsob, ktorý robí prihlásenie neprístupným. Ako to teda urobíme? V skutočnosti, Asp.Net MVC máme lepší spôsob, ako to všetko urobiť, nepotrebujeme autorizačnú metódu, čo znamená, že naše konfiguračné informácie vyzerajú takto:
Nie je potrebné špecifikovať, že anonymní používatelia sa nemôžu prihlásiť a podobne. Samozrejme, zistíte, že len toto nestačí, ale musíme systému povedať, na ktoré karty sa musia prihlásiť. Možno si myslíte, o()〈))o Och, to je príliš veľa problémov. Nie je to tak, je to veľmi jednoduché, stačí označiť [Autorizovať] na akcii, ktorá potrebuje byť overená. Napríklad mám dve stránky v priečinku Domov, Index a Home, a chcem, aby bol Index autentifikovaný na prístup, ale Home nie, takže Indexu stačí dať značku Akcia [Autorizovať], teda:
To umožňuje prístup k Indexu po prihlásení, zatiaľ čo Home nemusí byť prihlásený. Ak potrebujete autorizovať roly, môžete pri označovaní Authorize špecifikovať túto rolu (napr. [Authorize(Role=Administrators)]), ale musíte použiť mechanizmus členstva poskytovaný Microsoftom, pretože vaša rola nemôže existovať zbytočne, ale existuje v príslušnej databáze, o ktorej som písal v inom blogu. Prispôsobiť ActionFilter Niekedy nemusíte splniť tento typ autentifikácie, alebo ak máte pocit, že nie ste dostatočne flexibilní, potom to nevadí, Asp.Net MVC vám umožňuje prispôsobiť si ActionFilter. Napríklad teraz prispôsobujem autentifikáciu:
Ak je potrebná správa používateľov, definujem filtre súvisiace s rolou:
V skutočnosti zistíte, že vyššie uvedené dva atribúty boli v skutočnosti vyriešené vstavaným autorizovaným algoritmom MVC, a tu vám hlavne hovoríme, že ho môžete rozšíriť, ak je to potrebné. Tak to je na dnes všetko! Stiahnutie zdrojového kódu: FormFormsAuthenticationMvc
|