asp.net core api - nadanie użytkownikom kilku ról

1

Cześć.

Ostatnio tworzyłem w ASP.NET MVC 5, aplikacja miała zaimplementowany mechanizm autoryzacji użytkowników jaki dostarcza platforma (Identity) W ramach tego mechanizmu użytkownikowi można dodać kilka ról. Działa to poprawnie, Na kontrolery nałożyłem ograniczenia dostępu po rolach, dzięki czemu każdy user może mieć użyć określonych kontrolerów na jakie mu pozwalają przypisane role. Obecnie chciałem zrobić API do aplikacji SPA gdzie mechanizm autoryzacji będzie pozwalał na podobną funkcjonalność. Z tutoriali znalazłem tylko takie które pozwalają przypisać jednemu użytkownikowi jedną konkretną rolę.

Ktoś podobny mechanizm autoryzacji użytkowników z dodaniem wielu ról jednemu kontu usera w api implementował ?

0

Jeśli korzystasz z identity to domyślnie masz kilka ról dla usera. Nie rozumiem w czym masz problem. Jak coś pokaż kod.

0

Próbowałem zaimplementować Identity żywcem skopiowane z asp.net MVC w api, wydaje się że działa autoryzacja zgodnie z rolami, niestety z jego użyciem aplikacja ignoruje wygenerowany token. Dostępny tutorial z użyciem ról jest tu https://jasonwatmore.com/post/2019/01/08/aspnet-core-22-role-based-authorization-tutorial-with-example-api ale pozwala na przypisanie jednej roli jednemu użytkownikowi, nie mam pomysłu na przypisanie wielu ról jednemu użytkownikowi.

I chodzi mi o autoryzację w api z użyciem tokena.

0

Bo konfiguracja się różni w przypadku użycia JWT. Pierwsze znalezione w google
https://fullstackmark.com/post/13/jwt-authentication-with-aspnet-core-2-web-api-angular-5-net-core-identity-and-facebook-login

0

Ok, udało się skonfigurować autoryzację. Mam jednak pewne pytanie, w tokenie są zawarte role użytkownika, dopóki token jest ważny może korzystać z dostępu do zasobów zgodnie z rolami w tokenie. Załóżmy że usunąłem mu pewne role, dopóki nie pobierze nowego tokena może korzystać z zasobów choć jego konto już w rzeczywistości jest pozbawione roli. Jak w takiej sytuacji zmusić usera do pobrania nowego tokena ?

1

Gdybym coś takiego implementował to zrobiłbym własny atrybut authorize o tam sprawdzał rzeczywiste role. Jeśli brak odpowiedniej roli danemu userowi to zwraca 401, a front usuwa token i przekierowuje na stronę logowania. Role raczej nie są często zmieniane więc można to trzymać np w memoryCache i sprawdzać w tym authorize stan faktyczny

1 użytkowników online, w tym zalogowanych: 0, gości: 1