Role i zabezpieczenia ASP.NET MVC
Załóżmy, że jest to moja metoda akcji SampleController
public ActionResult AdminView()
{
return View()
}
Jeśli chcesz, aby ta metoda kontrolera była wywoływana, jeśli zalogowany użytkownik należy do roli administratora, w przeciwnym razie wywołanie tej metody powinno zostać zablokowane, a użytkownik powinien uzyskać niestandardową stronę błędu nieautoryzowanego dostępu.
W mojej aplikacji internetowej asp .net mvc, gdy użytkownik się loguje, przechowuję rolę użytkownika w sesji jako ciąg. Ilekroć zachodzi potrzeba sprawdzenia roli użytkownika, porównuję wartość zapisaną w sesji ze stałą mówiąc „ADMIN_ROLE”. Ale piszę ten fragment kodu, aby sprawdzić rolę użytkownika w prawie każdej metodzie działania kontrolera, a następnie albo zwrócić odpowiedni widok dla użytkownika, albo nieautoryzowany widok strony, jeśli rola użytkownika jest ograniczona do metody działania kontrolera.
Wyszukałem hasło i przeczytałem, że możemy użyć czegoś takiego.
[Authorize(Roles="admin")]
public ActionResult AdminView()
{
return View()
}
Ale nie jestem pewien, jak działa słowo kluczowe Autoryzuj i Role. Jak podczas umieszczania Roles = „Administrator” pomoże sprawdzić ciąg ról użytkownika przechowywany w sesji lub sposób, w jaki mogę przekierować użytkownika na nieautoryzowaną stronę, w przypadku, gdy rola nie pasuje do roli oznaczonej dla metody akcji.