【发布时间】:2020-02-26 03:11:50
【问题描述】:
在我的 Grails 3.3.10 应用程序中,我正在使用 Spring security plugin ,对于获取关键信息的特定页面,我需要用户再次输入凭据,尽管此用户之前在进入应用程序时登录,任何想法都可以实现这个。
【问题讨论】:
标签: authentication grails spring-security
在我的 Grails 3.3.10 应用程序中,我正在使用 Spring security plugin ,对于获取关键信息的特定页面,我需要用户再次输入凭据,尽管此用户之前在进入应用程序时登录,任何想法都可以实现这个。
【问题讨论】:
标签: authentication grails spring-security
您可以在您的application.groovy 中进行配置。例如
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
[pattern: '/', access: ['permitAll']],
[pattern: '/sensitivepage/**', access: ['ROLE_USER', 'isFullyAuthenticated()']]
]
/sensitivepage/ 下的任何内容都需要重新验证。
【讨论】:
您可以尝试为确实需要重新登录并注册自定义过滤器的端点创建过滤器链。在该过滤器中,您可以撤销现有令牌。使这些端点安全,以便如果请求没有令牌,那么它会将用户重定向到登录页面。
这是一个示例代码供您参考:(请注意,我没有尝试过这种情况,只是我在这里分享的一个想法。)
<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>
【讨论】: