MVC ima ActionFilter Za dosego preverjanja identitete v Asp.NET WebForm nam Microsoft ponuja tri načine, najpogosteje uporabljen je avtentikacija obrazcev, ki jo je treba konfigurirati z ustreznimi podatki. Na primer, naslednje konfiguracijske informacije:
To pomeni, da je naša prijavna stran Login.aspx, privzeta stran po uspešni prijavi Default.aspx, uporabniški podatki pa uporabljajo dva načina: preverjanje in šifriranje. In najpomembnejše je, da moramo napisati metodo avtorizacije (avtorizacija spodaj mora biti zapisana, sicer je brezsmiselno uporabljati le avtentikacijo obrazcev in nato nastaviti ustrezne atribute), zavrniti vse anonimne uporabnike in normalno dostopati le prijavljeni uporabniki. Nato nastavimo gumb za prijavo, da vpiše uporabniško ime v piškotek (to pomeni, da izvedemo FormsAuthentication.SetAuthCookie(name, false); To je to. 0 V Asp.Net prometnem prometu lahko uporabljamo tudi avtentikacijo preko Obrazca, vendar če to naredite v WebFormu, ne bo delovalo. Na primer, podatke nastavite takole:
V Login.aspx nastavite prijavo, ki sproži prijavo v AccountControllerju, kjer je prijavna koda:
Ko to storite, boste ugotovili, da vaša prijava ne bo zagnana. Kaj je razlog? Zakaj ista nastavitev ne deluje v MVC? Razlog je, da je mehanizem drugačen, saj nastavite način avtorizacije, ki onemogoča dostop do prijave. Kako torej to naredimo? Pravzaprav imamo v Asp.Net MVC boljši način za vse to, ne potrebujemo metode avtorizacije, kar pomeni, da naše konfiguracijske informacije izgledajo takole:
Ni treba posebej poudarjati, da anonimni uporabniki ne morejo vstopiti ipd. Seveda boste ugotovili, da samo to ni dovolj, vendar moramo sistemu sporočiti, katere je treba prijaviti za dostop. Morda mislite, o()〈))o Oh, to je preveč težav. Ni tako, zelo preprosto je, samo označiti moramo [Avtoriziraj] na dejanju, ki mora biti avtentičeno. Na primer, v domači mapi imam dve strani, Index in Home, in želim, da je indeks avtentikiran za dostop, vendar Home tega ne omogoča, zato moram indeksu dati le oznako Akcija [Authorize], torej že:
To omogoča dostop do Indexa po prijavi, medtem ko Home ni nujno prijavljen. Če morate avtorizirati vloge, lahko določite vlogo pri označevanju Authorize (npr. [Authorize(Role=Administrators)]), vendar morate uporabiti mehanizem članstva, ki ga zagotavlja Microsoft, ker vaša vloga ne more obstajati zastonj, ampak obstaja v ustrezni bazi podatkov, kar sem omenil v drugem blogu. Prilagodite ActionFilter Včasih morda ne boste dosegli takšne avtentikacije ali če menite, da niste dovolj prilagodljivi, potem ni pomembno, Asp.Net vam MVC omogoča prilagoditev ActionFilterja. Na primer, zdaj prilagajam avtentikacijo:
Če je potrebno upravljanje uporabnikov, bom določil filtre, povezane z vlogami:
Pravzaprav boste ugotovili, da sta zgornja dva atributa dejansko rešena z vgrajenim MVC-jevim Authorized, in tukaj vam predvsem povemo, da ga lahko po potrebi razširite. No, to je za danes vse! Prenos izvorne kode: FormFormsAuthenticationMvc
|