Ten projekt, nad którym pracuję, wymaga, żebym utrzymywał lokalną bazę użytkowników adminów i korzystał z zewnętrznego db dla zwykłych użytkowników. Każdemu, kto przejdzie uwierzytelnianie w db administracyjnym, należy przypisać rolę "admin", a każdemu uwierzytelnionemu przez inną bazę danych zawsze zostanie przydzielona rola "użytkownika".Jak ręcznie ustawić rolę użytkownika w ASP.NET MVC?
Czy mogę ręcznie przypisać te role? Nie potrzebuję złożoności dostawcy ról ani nic takiego, ponieważ używam tylko tych dwóch ról, które ZAWSZE będą oparte na tym, którego bazy danych uwierzytelniają.
Byłoby to OGROMNA pomoc, gdyby można było podać przykładowy kod lub link do niektórych dokumentów. Dzięki!
EDIT:
Obecnie nie używam dostawcy roli i tworząc jeden wydaje się być kłopotów. Wiem, że nie jest to "najlepsza praktyka", ale muszę tylko przypisać 1 z 2 ról podczas logowania (to się nigdy nie zmieni). Nie ma sensu również przechowywać informacji o rolach w bazie danych, ponieważ użytkownicy są już podzieleni na dwie role za pomocą swojej roli.
Oto niektóre pseudo-code:
if (AdminDB.ValidateUser(username,password)==true) {
SetAuthCookie(username);
AssociateUserWithRole(username, 'admin');
} elseif (UserDB.ValidateUser(username,password)==true) {
SetAuthCookie(username);
AssociateUserWithRole(username, 'user');
} else {
// Login failed.
}
Jego część 'ThisSession.AssociateUserWithRole' nie wiem. Zasadniczo jeden użytkownik jest uwierzytelniony, muszę powiedzieć .NET do której roli należy użytkownik.
Niestandardowy AuthorizeAttribute ma najbardziej sensowne dla mnie (noob MVC .NET z PHP-land). Dzięki za pomoc!! –
Czy Twój sposób używania 'sesji' jest następujący: w login->' Session.Add ("LoggedInRole", "admin"); 'i kiedy potrzebuję bieżącego typu użytkownika, przeczytaj go z' Sesji'. Czy 'Session' jest wystarczająco bezpieczny, aby zapisać typ użytkownika (rolę) w nim? –
@MajidR 'Session' jest zwykle po stronie serwera, więc nie jest mniej bezpieczny niż dostawca roli, z perspektywy intruzów. Musiałbyś oczywiście zakodować całą logikę, więc z punktu widzenia niezawodności będzie to zależało. Prawdopodobnie wybrałbym trasę 'RoleProvider'. – tvanfosson