Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 15478|Atsakyti: 0

[ASP.NET] Vartotojo ir vaidmens autentifikavimas pagal FormsAuthentication

[Kopijuoti nuorodą]
Paskelbta 2018-07-19 17:31:14 | | |
Įprastomis aplinkybėmis, kai atliekame prieigos teisių valdymą, išsaugosime pagrindinę vartotojo informaciją po teisingo prisijungimo sesijoje ir gausime ją kiekvieną kartą, kai vartotojas ateityje paprašys puslapio ar sąsajos duomenų

Sesija, skirta pamatyti ir palyginti, ar jis prisijungęs ir ar gali pasiekti dabartinį puslapį.

       Sesijos principas yra generuoti SessionID serverio pusėje, atitinkantį saugomus vartotojo duomenis, o SessionID saugomas slapuke, ir klientas jį nešiojasi su savimi kiekvieną kartą, kai to prašoma

Slapukas, serveris randa serverio pusėje saugomus duomenis pagal slapuke esantį sesijos ID.

       "FormsAuthenticing" teikia "Microsoft", kad galėtume naudoti mums, kūrėjams, autentifikavimui. Naudodami šį autentifikavimą galime išsaugoti vartotojo vardą ir kai kuriuos vartotojo duomenis slapukuose,

Pagrindinį tapatybės ir vaidmens autentifikavimą galima lengvai pasiekti naudojant pagrindinius sąlygų nustatymus.

       Čia reikia įdiegti vaidmenimis pagrįstą prieigos valdymą naudojant sistemos pateiktą autorizaciją nenaudojant narystės.

1. Sukurkite bilietą

Vartotojui prisijungus, vartotojo ID ir atitinkamas vaidmuo (keliems vaidmenims atskirai) saugomi biliete.

Užšifruokite bilietą naudodami FormsAuthentication.Encrypt.

Išsaugokite užšifruotą bilietą atsakymo slapuke (klientui js nereikia skaityti šio slapuko, todėl geriausia nustatyti HttpOnly=True, kad naršyklės atakos nevogtų ir nesuklastotų slapukų). Tokiu būdu kitą kartą galėsite jį perskaityti iš užklausos slapuko.

Paprasta demonstracinė versija yra tokia:


bool isPersistent, //or to remain (nustatykite pagal poreikį, jei nustatyta į pastovumą, siunčiant slapuką reikia nustatyti slapuko galiojimo pabaigos nustatymą)

Šeštasis FormsAuthenticationTicket parametras saugo eilutės tipo vartotojo duomenis, kuriuose saugomas dabartinio vartotojo vaidmens ID, atskirtas kableliu.

Prisijungus su vartotojo vardu "test", kliente pasirodo žurnalo slapukas


2. Gaukite sertifikavimo informaciją

Prisijungę turinio puslapyje galime gauti "uname" informaciją naudodami dabartinės užklausos User.Identity.Name arba galime iššifruoti slapuką užklausoje gauti bilietą, o tada iš jo gauti "uname" ir "userData" (tai yra anksčiau saugomą vaidmens ID informaciją).


3. Realizuokite leidimų prieigos valdymą naudodami komentarų atributus

Formos autentifikavimo ir vaidmenų valdymo įgalinimo konfigūravimas web.config

Kai pridedame anotacijos ypatybes prie valdiklio ir veiksmo, iš kur gauname nustatytą vaidmenį? Kadangi nenaudojame naryste pagrįsto autentifikavimo, taip pat sukursime pasirinktinį RoleProvider. Pavadinimas yra CustomRoleProvider, kuris yra paveldėtas iš RoleProvider. Čia yra savo CustomRoleProvider.cs failo sukūrimas MVCApp aplanke "Helper".

RoleProvider yra daug abstrakčių metodų, o vartotojų vaidmenims gauti diegiame tik GetRolesForUser metodą. Vartotojo vaidmens čia galima užklausti iš duomenų bazės pagal gautą vartotojo ID arba tą, kuris saugomas sesijoje arba saugomas slapuke. Čia aš jau išsaugojau vaidmenį vartotojo duomenys, todėl gaukime jį iš bilieto.

Jei reikia, pridėkite anotacijos atributus prie patvirtinto valdiklio ar veiksmo, pavyzdžiui, šis veiksmas leidžia prieigą tik su RoleID 1, 2 arba 3, o dabartinis vartotojas RoleID yra (7, 1, 8), o tai reiškia, kad vartotojas turi prieigos teisę.

P.S. :1. Bilietas saugomas slapuko galiojimo laiku, o jei naršyklė uždaryta, kad įsimintų dabartinį bilietą, parametrus galima nustatyti sukūrus FormsAuthenticationTicket.

2. Vaidmens įsigijimas gali būti nuskaitomas tiesiai iš duomenų bazės, nesaugomas bilieto vartotojo duomenyse, o vartotojo duomenys gali saugoti kitą informaciją.

3. Jei norite lanksčiai konfigūruoti valdiklio ir veiksmo leidžiamos prieigos vaidmenis, galite tinkinti OnAuthorization metodą AuthorizeAttribute nepaisyme, kuriame naudojamas metodas

      Perskaitykite vaidmens ID, kuris leidžiamas dabartiniame puslapyje, ir patikrinkite jį pagal dabartinio vartotojo RoleID. Tokiu būdu realizuojama lanksti vaidmens konfigūracija.

            4. Biliete esanti informacija galiausiai saugoma slapuke, o saugumas vis tiek yra jūsų nuožiūra, aš asmeniškai manau, kad geriau saugoti "UserID" ir "RoleID" sesijoje.





Ankstesnis:Baidu žemėlapis: išspręsti taškų agregavimo žymeklis delsos sprendimas
Kitą:Įdarbinkite techninius partnerius
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com