chcę być w stanie
- Uzyskaj listę ról bieżącego uwierzytelnionego użytkownika.
- Filtruj dane dostarczone temu użytkownikowi na podstawie ich roli.
Widzę sposoby sprawdzenia, czy użytkownik jest wszczególną rolę, ale nie dbam o to, jaką rolę w nich biorą, baza danych wie, jakie role mogą zobaczyć dane. Muszę przesłać kolekcję tych ról do usługi danych, aby filtrować dane na podstawie tych ról.
Pierwszym krokiem jest zatem, w jaki sposób uzyskać wszystkie role związane z bieżącym użytkownikiem w metodzie sterownika?
EDYTOWAĆ:
Wydaje się, że to ładnie działa:
Roles.GetRolesForUser(User.Identity.Name)
Wspieranie odpowiedzi nadal jest mile widziane.
Odpowiedzi:
22 dla odpowiedzi nr 1Roles.GetRolesForUser(User.Identity.Name)
11 dla odpowiedzi nr 2
Można to zrobić za pomocą pojedynczej instrukcji:
User.IsInRole("admin");
10 dla odpowiedzi nr 3
Jeśli ktoś potrzebuje tych informacji, na wypadek, gdyby twój użytkownik miał wiele ról, ale go szukasz, możesz to zrobić: (myślałem, że udostępniam)
@if (Request.IsAuthenticated)
{
string[] roles = Roles.GetRolesForUser();
foreach (string role in roles)
{
if (role.Contains("admin"))
{
<li>@Html.ActionLink("Administration", "Admin", "Movies")</li>
break;
}
}
}