5

Opublikowałem this question około 8 miesięcy temu. Przyjęta odpowiedź dotyczy niektórych rzeczy, których można przegapić, nie grając według domyślnych reguł dostawcy. Na przykład, jeśli nie używasz niestandardowego RoleProvider, który dziedziczy z RoleProvider, tracisz możliwość używania skrótów takich jak User.IsInRole(). Odpowiedź odnosi się do takich rzeczy jak "wbudowana instalacja hydrauliczna".Jakie są ukryte powody, by korzystać z domyślnego dostawcy członkostwa lub niestandardowego, który go dziedziczy?

To, co chcę wiedzieć, to gdzie mogę znaleźć pełną listę rzeczy, które opierają się na "wbudowanej hydraulice" i czymś, co pokazuje, do których nadpisywanych metod dzwonią za kulisami.

Na przykład HttpContext.Current.User.IsInRole() jest (zakładam), odnosząc się do i nazywając mój nadpisane „isUserInRole()” metoda w moim zwyczaju RoleProvider, ale chciałbym, aby zapoznać się z dokumentacją, gdzie jest wyraźnie stwierdził, że HttpContext.Current.User.IsInRole() faktycznie dzwoni IsUserInRole(), dla wszystkich takich metod dla wszystkich dostawców.

Rozumiem, że powinno to być już oczywiste (IsInRole() i IsUserInRole() są bardzo podobne), ale moją motywacją do zadawania jest zobaczyć i dowiedzieć się o innych rodzajach takich skrótów, które są dostępne ". Nie jestem nawet tego świadomy. Mam wrażenie, że wielokrotnie wymyśliłem koło i nawet o tym nie wiem.

Odpowiedz

0

Nie są one takie same, ale niezależnie od tego, jaki dostawca roli użyjesz, prawdopodobnie zapełni kolekcję ról obecnego użytkownika, aby zawierał wszystkie role dostawcy.

HttpContext.Current.User jest IPrincipal którym można przeczytać o tutaj: http://msdn.microsoft.com/en-us/library/system.security.principal.aspx

Jest to konwencja NET Tożsamości w dowolnej aplikacji .NET (w tym ASP.NET oczywiście). Jedynym sposobem, możesz być pewny, że implementacja IPrincipala, którego używasz, wywołuje tę samą funkcję, co RoleProvider, polega na użyciu takiego, który faktycznie pochodzi od twojego dostawcy.

Dostawcy pozycji są tworzeni w obiekcie httpApplication (http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx) i są dostępni do użytku przez główną realizację.

Spójrz na sekcję Spostrzeżenia zawarte w tym artykule MSDN: http://msdn.microsoft.com/en-us/library/bb340078.aspx powołaniu IsUserInRole dostawcy rolę poprzez IsInRole Zleceniodawcy jest wyłącznie do realizacji swojego głównego dostawcę.