Введение в Spring Security Taglibs
1. обзор
В этом руководстве мы рассмотримSpring Security Taglibs, который обеспечивает базовую поддержку для доступа к информации о безопасности и применения ограничений безопасности в JSP.
2. Maven Зависимости
Прежде всего, давайте добавим зависимостьspring-security-taglibs к нашемуpom.xml:
org.springframework.security
spring-security-taglibs
5.0.7.RELEASE
3. Объявление Taglibs
Теперь, прежде чем мы сможем использовать теги, нам нужно импортировать taglib вверху нашего файла JSP:
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
После добавления этого мы сможем указать теги Spring Security с помощью sprefixsec .
4. Тегauthorize
4.1. access выражения
В наших приложениях у нас может быть информация, которая должна отображаться только для определенных ролей или пользователей.
В этом случае мы можем использовать тегauthorize:
Login
Logout
Кроме того, мы можем проверить, имеет ли аутентифицированный пользователь определенные роли:
Manage Users
И мы можем использовать любойSpring Security expression в качестве значения дляaccess:
-
hasAnyRole(‘ADMIN','USER') возвращаетtrue, если текущий пользователь имеет любую из перечисленных ролей
-
isAnonymous() возвращаетtrue, если текущий участник является анонимным пользователем
-
isRememberMe() возвращаетtrue, если текущий участник - запомнивший меня пользователь
-
isFullyAuthenticated() возвращаетtrue, если пользователь аутентифицирован и не является ни анонимным, ни запоминающимся пользователем
4.2. urlс
Помимо этого, мы можем проверить пользователей, которым разрешено отправлять запросы на определенные URL-адреса:
4.3. отладка
Могут быть случаи, когда нам нужен больший контроль над пользовательским интерфейсом, например, в сценариях тестирования. Вместо того, чтобы Spring Security пропускал рендеринг этих неавторизованных разделов, мы можем установитьspring.security.disableUISecurity =true, скажем, в нашем файлеapplication.properties.
When we do this, the authorize tag won’t hide its contents. Вместо этого он обернет содержимое тегами<span class=”securityHiddenUI”>… </span>. Затем мы можем настроить рендеринг самостоятельно с помощью CSS.
Remember though that hiding content via CSS isn’t secure! Пользователь может просто просмотреть источник, чтобы увидеть неавторизованный контент.
5. Тегauthentication
В других случаях мы можем отображать сведения о вошедшем в систему пользователе, например, сказать что-то вроде «С возвращением, Кэрол!» на сайте.
Для этого используем stagauthentication :
Welcome Back,
6. ТегcsrfInput
Надеюсь, в нашем приложении включена защита CSRF Spring Security!
Если мы это сделаем, то Spring Security уже вставляет ввод скрытой формы CSRF в теги<form:form> для нас.
Но если мы хотим использовать вместо этого<form>,we can manually indicate where Spring Security should place this hidden input field using csrfInput:
Если защита CSRF не включена, этот тег ничего не выводит.
7. ТегcsrfMetaTags
Или,if we’re wanting to access the CSRF token in Javascript,, мы, вероятно, захотим вставить токен как метатег.
Мы можем сделать это с помощьюcsrfMetaTags tag:
JavaScript with CSRF Protection
...
Опять же, если защита CSRF не включена, этот тег ничего не выводит.
8. Заключение
В этой быстрой статье мы сосредоточились на некоторых распространенных сценариях использования taglib в Spring Security.
И, как мы узнали, они очень полезны для рендеринга контента JSP с аутентификацией и авторизацией.
Все примеры, как всегда, можно найтиover on Github.