Заставьте пользователя вводить учетные данные для определенных страниц - PullRequest
0 голосов
/ 30 октября 2019

В моем Grails 3.3.10 приложении, которое я использую Spring security plugin, для определенных страниц, которые получили критическую информацию, мне нужно, чтобы пользователь снова ввел учетные данные, хотя этот пользователь входил в систему до входа в приложение. Любые идеи для достиженияэто.

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вы можете настроить это в вашем application.groovy. Например,

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    [pattern: '/',               access: ['permitAll']],
    [pattern: '/sensitivepage/**',       access: ['ROLE_USER', 'isFullyAuthenticated()']]
]

Все, что под /sensitivepage/, потребует повторной аутентификации.

Это объясняется в Spring Security Documentation .

0 голосов
/ 31 октября 2019

Вы можете попытаться создать цепочку фильтров для конечных точек, которым необходимо снова войти в систему и зарегистрировать пользовательский фильтр. В этом фильтре вы можете отозвать существующий токен. Сделайте эти конечные точки безопасными, чтобы, если запрос пришел без токена, он перенаправлял пользователя на страницу входа.

Вот пример кода для вашей справки: (Обратите внимание, что я не пробовал этот сценарий, это просто мысль, которой я поделюсь здесь.)

<bean id="reauthenticateFilterChain" class="org.springframework.security.web.DefaultSecurityFilterChain">
    <constructor-arg index="0" ref="reauthenticateResourceRequestMatcher"/>
    <constructor-arg index="1">
        <list>
            <ref bean="reauthenticateFilter"/>
        </list>
    </constructor-arg>
</bean>

Этокак вы можете зарегистрировать свою собственную цепочку фильтров.

<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
    <constructor-arg>
        <list>
            <ref bean="reauthenticateFilterChain"/>
        </list>
    </constructor-arg>
</bean>
...