MVC-l on ActionFilter Identiteedi autentimise saavutamiseks Asp.NET WebFormis pakub Microsoft meile kolme võimalust, millest kõige sagedamini kasutatakse vormi autentimist, mis tuleb konfigureerida vastava infoga. Näiteks järgmine konfiguratsiooniinfo:
See tähendab, et meie sisselogimisleht on Login.aspx, vaikimisi leht pärast edukat sisselogimist on Default.aspx ning meie kasutajaandmed kasutavad kahte meetodit: verifitseerimist ja krüpteerimist. Ja kõige tähtsam on see, et peame kirjutama autoriseerimismeetodi (allpool olev autoriseerimine peab olema kirjutatud, muidu on mõttetu kasutada ainult Formsi autentimist ja seejärel määrata asjakohased atribuudid), keelata kõik anonüümsed kasutajad ning normaalselt pääsevad ligi ainult sisse logitud kasutajad. Pärast seda seadistame sisselogimisnupu nii, et kasutajanimi kirjutatakse küpsisesse (ehk käivitame FormsAuthentication.SetAuthCookie(nimi, vale)); See ongi kõik. 0 Asp.Net MVC-s saame kasutada ka vormide autentimist, aga kui teed seda WebFormis, siis see ei tööta. Näiteks seadistad info nii:
Sa seadistad oma Login.aspx sisselogimise, et käivitada AccountControlleris sisselogimine, kus Logon kood:
Pärast seda avastad, et sinu sisselogimist ei täideta. Mis on põhjus? Miks sama seade MVC-s ei tööta? Põhjus on selles, et mehhanism on erinev, sest sa seadistad autoriseerimismeetodi, mis teeb Logoni ligipääsmatuks. Kuidas me seda siis teeme? Tegelikult on MVC-s Asp.Net parem viis seda kõike teha – meil pole vaja autoriseerimismeetodit, mis tähendab, et meie konfiguratsiooniinfo näeb välja selline:
Pole vaja täpsustada, et anonüümsed kasutajad ei saa sisse logida jne. Muidugi avastad, et ainult sellest ei piisa, kuid peame süsteemile ütlema, millised neist tuleb sisse logida, et ligi pääseda. Võid mõelda, o()〈))o Oh, see on liiga palju vaeva. See pole nii, see on väga lihtne, me peame lihtsalt märkima [Autoriseerimise] tegevusele, mis tuleb autentida. Näiteks mul on kodukaustas kaks lehte, Indeks ja Kodu, ning ma tahan, et indeks oleks autentitud, et sellele ligi pääseda, kuid Kodu seda ei tee, seega pean Indeksile andma ainult Tegevusmärgise [Autoriseerimise], ehk järgmist:
See võimaldab Indexile ligi pääseda pärast sisselogimist, samas kui Home ei pea olema sisse logitud. Kui pead rolle autoriseerima, siis saad rolli määrata, kui märgid Authorize (nt [Authorize(Role=Administrators)]), kuid pead kasutama Microsofti pakutavat liikmesmehhanismi, sest sinu roll ei saa eksisteerida asjata, vaid eksisteerib vastavas andmebaasis, mida mainisin teises blogis. Kohanda ActionFilterit Mõnikord ei pruugi sa sellist autentimist täita või kui tunned, et sa pole piisavalt paindlik, siis pole vahet, Asp.Net MVC võimaldab sul oma ActionFilterit kohandada. Näiteks kohandan nüüd autentimist:
Kui kasutajahaldus on vajalik, määratlen rollipõhised filtrid:
Tegelikult leiate, et ülaltoodud kaks atribuuti on lahendatud MVC sisseehitatud volitusega ning siin ütleme peamiselt, et saate seda vajadusel laiendada. Noh, tänaseks on kõik! Lähtekoodi allalaadimine: FormFormsAuthenticationMvc
|