MVC yra su "ActionFilter" Norėdami pasiekti tapatybės autentifikavimą Asp.NET WebForm", "Microsoft" pateikia mums tris būdus, iš kurių dažniausiai naudojamas yra mūsų formos autentifikavimas, kurį reikia sukonfigūruoti naudojant atitinkamą informaciją. Pavyzdžiui, ši konfigūracijos informacija:
Tai reiškia, kad mūsų prisijungimo puslapis yra Login.aspx, numatytasis puslapis po sėkmingo prisijungimo yra Default.aspx, o mūsų vartotojo informacija naudojama dviem būdais: patvirtinimu ir šifravimu. Ir svarbiausia yra tai, kad turime parašyti autorizacijos metodą (žemiau pateiktas įgaliojimas turi būti parašytas, kitaip nenaudinga naudoti tik formų autentifikavimą ir tada nustatyti atitinkamus atributus), paneigti visus anoniminius vartotojus, o tik prisijungę vartotojai gali normaliai pasiekti. Po to mes nustatėme prisijungimo mygtuką, kad vartotojo vardas būtų įrašytas į slapuką (tai yra, vykdyti FormsAuthentication.SetAuthCookie(vardas, klaidingas); Viskas. 0 Asp.Net MVC taip pat galime naudoti formų autentifikavimą, bet jei tai padarysite "WebForm", tai neveiks. Pavyzdžiui, informaciją konfigūruojate taip:
Savo Login.aspx nustatėte prisijungimą, kad suaktyvintumėte prisijungimą prie AccountController, kur prisijungimo kodas:
Tai padarę pamatysite, kad jūsų įėjimas nebus vykdomas. Kokia priežastis? Kodėl tas pats nustatymas neveikia MVC? Priežastis ta, kad mechanizmas skiriasi, nes nustatote autorizacijos metodą, dėl kurio įėjimas tampa nepasiekiamas. Taigi, kaip tai padaryti? Tiesą sakant, Asp.Net MVC turime geresnį būdą visa tai padaryti, mums nereikia autorizacijos metodo, o tai reiškia, kad mūsų konfigūracijos informacija atrodo taip:
Nereikia nurodyti, kad anoniminiai vartotojai negali prisijungti ir pan. Žinoma, pastebėsite, kad vien to nepakanka, tačiau turime pasakyti sistemai, prie kurių reikia prisijungti, kad galėtumėte prisijungti. Galbūt galvojate, o()〈))o O, tai per daug bėdos. Tai nėra taip, tai labai paprasta, mums tiesiog reikia pažymėti [Įgalioti] ant veiksmo, kurį reikia autentifikuoti. Pavyzdžiui, pagrindiniame aplanke turiu du puslapius, rodyklę ir pagrindinį, ir noriu, kad rodyklė būtų autentifikuota, kad galėčiau pasiekti, bet pagrindinis ne, todėl turiu suteikti indeksui tik veiksmo žymę [Įgalioti], tai yra:
Tai leidžia pasiekti "Index" prisijungus, o "Home" nereikia prisijungti. Jei jums reikia įgalioti vaidmenis, galite nurodyti vaidmenį žymėdami Įgalioti (pvz., [Įgalioti(Role=Administratoriai)]), tačiau turite naudoti "Microsoft" teikiamą narystės mechanizmą, nes jūsų vaidmuo negali egzistuoti veltui, bet egzistuoja atitinkamoje duomenų bazėje, kurią minėjau kitame tinklaraštyje. Tinkinti ActionFilter Kartais gali nepavykti įvykdyti tokio autentifikavimo arba jei manote, kad nesate pakankamai lankstūs, tai nesvarbu, Asp.Net MVC leidžia tinkinti "ActionFilter". Pavyzdžiui, dabar tinkinu autentifikavimą:
Jei reikalingas vartotojų valdymas, apibrėžsiu su vaidmenimis susijusius filtrus:
Tiesą sakant, pastebėsite, kad pirmiau minėtus du atributus iš tikrųjų išsprendė MVC integruotas įgaliotasis, ir čia daugiausia sakome, kad prireikus galite jį pratęsti. Na, tai viskas šiandien! Šaltinio kodo atsisiuntimas: FormFormsAuthenticationMvc
|