W życiu każdego z nas przychodzi taki moment, kiedy należy pamiętać o odpowiednim zabezpieczeniu się. W końcu nie możemy pozwalać wszystkim na wszystko – rajt?
Pisząc w C# mamy do dyspozycji pewien mechanizm, który może nam pomóc w udostępnianiu części kodu wybranym użytkownikom. Znajduje się on w:
using System.Security.Principal; using System.Security.Permissions;
Możemy korzystać ze sprawdzania kodu w sposób deklaratywny, poprzez atrybuty przy funkcjach, gdy chcemy odciąć całą metodę dla wybranej grupy użytkowników.
[PrincipalPermission(SecurityAction.Demand, Role = "user")] void foo(){}Lub w imperatywny sposób (nie do końca wiem, jak to przetłumaczyć). Zasadnicza różnica polega na możliwości wyłączenie części kodu.
try { PrincipalPermission pp = new PrincipalPermission(null, @"BUILTINAdministrators", true); pp.Demand(); MessageBox.Show("This message box should be only to admins", "Info"); } catch (System.Security.SecurityException sec_ex) { MessageBox.Show(sec_ex.Message, sec_ex.GetType().Name); }
Oczywiście są już gotowe klasy do tego wszystkiego PrincipalPermission.
Ale wiadomo że trzeba czasem zrobić coś inaczej/lepiej, wtedy trzeba wykorzystać dwa proste interfejsy
IIdentity IPrincipal
Prosta implementacja i wszystko gotowe.
Jednak! Czasem nie ma potrzeby implementacji tego wszystkiego (jak się jest niezdecydowanym jak wiadomo kto), a wystarczy najprostsza implementacja, wtedy nie ma potrzeby implementacja tych interfejsów, a skorzystać można z gotowego rozwiązania
GenericIdentity GenericPrincipal
Wszystko można obejrzeć i sprawdzić szczegóły korzystając z tego przygotowanego kodu, który jest dostępny jak zawsze na xp-dev.
Pisane późno w nocy, enyłej mam nadzieję że komuś się przyda.