Введение в Spring Security Taglibs

Введение в 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:

Text Field:

Если защита 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.