Witam, zmagamy się z takim kłopotem. Napisałem swój własny system do uwierzytelniania, który sprawdza przesyłane dane, wyciąga informacje o użytkowniku, haśle i jego rolach z bazy danych a następnie tworzy obiekt w :
HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(username),roles);
(dla uproszczenia załóżmy, że są dwie role : read i write, nasz username posiada tylko read
Następnie jeśli w jakimś miejscu wywołam np. controller
wywołam :
bool checkOne = HttpContext.Current.User.IsInRole("read"); // zwróci true
bool checkTwo = HttpContext.Current.User.IsInRole("write"); // zwróci false
Czyli wszystko działa, jednakże jeśli chcę dodać nad metodą w kontrolerze atrybut :
[PrincipalPermission(SecurityAction.Demand, Role="read")]
dostaję SecurityException
W sumie na msdn nie znalazłem czy PrincipalPremission pobierane dane z contextu, ale jeśli nie stąd, to skąd ? :>