W naszej aplikacji zaplanowaliśmy używać mechanizmu RoleVoter
ale chcielibyśmy usunąć przedrostek ROLE_
jako zabezpieczenie wdrażamy jest bardziej zadanie oparte niż roli opartej.Dlaczego funkcja RoleVoter Spring Security potrzebuje prefiksu?
Technicznie, nie ma problemu z implementacją, ale znalazłem w dokumentacji, że using the RoleVoter
with an empty prefix should be discouraged.
Zastanawiam się, dlaczego?
AFAICS, jedynym problemem jest to, że bez prefiksu The RoleVoter
będą uczestniczyć w podejmowaniu decyzji, że nie ma (takich jak IS_AUTHENTICATED_FULLY
, IS_AUTHENTICATED_REMEMBERED
, ...) i moc wraca dostępu odmówiono zamiast powstrzymywać się .
Czy możesz potwierdzić, że jest to jedyny problem z pustym prefiksem?
góry dzięki M.
Witaj Luke, właśnie uaktualniam Spring Boot z 1.2.2 do 1.3.2 i to zaczęło mnie hamować. Moje kontrolery mają @PreAuthorize ("hasRole ('Edit')") i teraz zaczynają sprawdzać prefiks ROLE_. Wygląda na to, że twoje wyjaśnienie hasRole() uległo zmianie odkąd opublikowałeś tę odpowiedź, ponieważ przechodzi ona przez RoleVoter. Próbowałem znaleźć sposób, aby ustawić prefiks do opróżnienia "", ale żaden z nich nie działa ... Czy możesz polecić inny sposób, aby to zrobić w Spring Boot 1.3.2? – szxnyc
Zmieniłem go na haaAuthority i zadziałało. – szxnyc