Normál körülmények között, amikor hozzáférési jogkezelést végzünk, a felhasználó alapvető adatait a helyes bejelentkezés után elmentjük, és minden alkalommal, amikor a felhasználó a jövőben oldal- vagy felületadatokat kér, megkapjuk azokat
A beszélgetés, hogy megnézzük és összehasonlítsuk, be van jelentkezve, és hozzáférhet-e a jelenlegi oldalhoz.
A Session elve, hogy a szerver oldalán egy SessionID-t generál, amely megfelel a tárolt felhasználói adatoknak, és a SessionID egy sütikben van, és a kliens minden kéréskor magával viszi ezt
Cookie esetén a szerver megtalálja a szerver oldalán tárolt adatokat a süti szekció azonosítója alapján.
A FormsAuthentication szolgáltatást a Microsoft biztosítja az amerikai fejlesztők számára hitelesítéshez. Ezzel a hitelesítéssel tárolhatjuk a felhasználónevet és néhány felhasználói adatot sütikben,
Az alapvető identitás- és szerephitelesítés könnyen elérhető alapvető feltételek beállításával.
A hatás az, hogy szerepalapú hozzáférés-vezérlést valósítunk meg a rendszer által biztosított Authorize használatával tagság nélkül.
1. Indíts jegyet
A felhasználó bejelentkezése után a felhasználó azonosítója és a hozzá tartozó szerep (több szerep esetén külön) eltárolódik a jegyben.
Titkosítsd a jegyet a FormsAuthentication.Encrypt segítségével.
Tárold a titkosított jegyet a Válasz süti (a js kliensnek nem kell elolvasnia ezt a sütit, ezért a legjobb, ha HttpOnly=True beállítást állítunk, hogy megakadályozzuk a böngészőtámadások sütik ellopását és hamisítását). Így legközelebb elolvashatod a Request cookie-ból.
Egy egyszerű bemutató a következő:
bool isPersistent, //hogy maradjon (szükség szerint állítva be, ha persistenciára állítva, akkor a süti Expires beállítását be kell állítani süti küldésekor
A FormsAuthenticationTicket hatodik paramétere tárolja a userData típus-sorozatot, ahol a jelenlegi felhasználó szerepazonosítója található, és ezt vesszővel választják el.
Amikor "test" felhasználónévvel jelentkezel be, egy napló süti jelenik meg a kliensen
2. Szerezzen be tanúsítványi információkat
Bejelentkezés után, a tartalomoldalon megszerezhetjük az uname adatait a jelenlegi kérés User.Identity.Name keresztül, vagy lefejthetjük a cookie-t a kérésben, hogy megszerezzük a jegyet, majd onnan megszerezzük az uname-t és a userdata-t (azaz a korábban tárolt szerepazonosító adatokat).
3. Valósítsd meg az engedély hozzáférési vezérlését annotációs attribútumok segítségével
Konfiguráld Enable Form Authentication and Role Management a web.config fájlban
Amikor annotációs tulajdonságokat adunk hozzá a Controller és Action rendszerekhez, honnan kapjuk a Role beállítást? Mivel nem használjuk a tagságalapú hitelesítést, egyedi RoleProvidert is fogunk létrehozni. A név CustomRoleProvider, amely a RoleProvider-től örökölt. Íme a saját CustomRoleProvider.cs fájlod létrehozása a Segítő mappában az MVCApp alatt.
A RoleProviderben sok absztrakt metódus van, és csak a GetRolesForUser metódust alkalmazzuk a felhasználói szerepek megszerzéséhez. A felhasználói szerep itt az adatbázisból lekérdezhető a megszerzett felhasználói azonosító alapján, illetve a munkafolyamatban tárolt vagy a cookie-ban tárolt azonosító alapján. Itt már elmentettem a szerepet a jegy userdata-jában, szóval vegyük ki a jegyből.
Ha szükséges, adj hozzá annotációs attribútumokat a validált Controllerhez vagy Művelethez, például ez az Akció csak 1, 2 vagy 3 RoleID esetén engedélyezi a hozzáférést, és a jelenlegi felhasználói RoleID (7, 1, 8), ami azt jelenti, hogy a felhasználónak joga van hozzáférni.
Ui.: 1. A jegy a süti lejárati idején tárolódik, és ha a böngésző be van zárva, hogy emlékezzen a jelenlegi jegyre, akkor a paraméterek beállíthatóak, amikor a FormsAuthenticationTicket megidézik.
2. A Role megszerzése közvetlenül az adatbázisból olvasható anélkül, hogy a jegy userData-jában tárolnák, és a userData más információkat is tárolhat.
3. Ha rugalmasan szeretnéd konfigurálni a Controller és az Action Allowed Access szerepeket, testreszabhatod az OnAuthorization metódust az AuthorizeAttribute felülbírálásban, ahol a metódus működik
Olvasd el a jelenlegi oldalon engedélyezett szerepazonosítót, és ellenőrizd azt a jelenlegi felhasználó RoleID-je szerint. Így valósul meg a szerep rugalmas konfigurációja.
4. A jegyben lévő információk végül a süti alatt vannak tárolva, és a biztonság továbbra is a te döntésedben van, személy szerint szerintem jobb a UserID-t és RoleID-t a munkamenetben tárolni.
|