如何在 Spring Security Grails 上自定义 /login/authenticate?

Posted

技术标签:

【中文标题】如何在 Spring Security Grails 上自定义 /login/authenticate?【英文标题】:How can I customize /login/authenticate on Spring Security Grails? 【发布时间】:2018-11-04 10:10:41 【问题描述】:

我正在执行对<g:form controller="login" action="authenticate" class="form"> 的更改,它重定向到插件/login/authenticate 中包含的身份验证。

如何自定义另一个动作的路径,以便在调用该动作时执行会话检查?

【问题讨论】:

【参考方案1】:

您可以按照以下方式执行自己/自定义的身份验证操作。

    <!--Your login page gsp-->
    <g:form controller="login" action="auth" class="form">

您的 GSP 自定义操作

//inject springSecurityService this service in the login controller as def springSecurityService

        def auth()
            def config = SpringSecurityUtils.securityConfig
            if (springSecurityService.isLoggedIn()) 
                redirect uri: config.successHandler.defaultTargetUrl
                return
            
        

【讨论】:

【参考方案2】:

您可以创建自己的操作并重定向到默认的 /login/authenticate apf url。您可以检查您的操作。

如果您需要在用户通过身份验证后检查某些内容,您可以简单地覆盖操作 def ajaxSuccess() 创建具有相同名称的控制器,即。登录控制器。

【讨论】:

【参考方案3】:

Spring 安全性是围绕过滤器链构建的。正确的方法是创建一个新的过滤器。您可能需要下载 spring grails 安全核心插件并查看 GrailsUsernamePasswordAuthenticationFilter 之类的类以了解如何操作。

【讨论】:

以上是关于如何在 Spring Security Grails 上自定义 /login/authenticate?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring 获取之前捕获 Spring Security 登录表单?

如何在 Spring WebFlux Security(Reactive Spring Security)配置中将多个用户角色添加到单个 pathMatcher/Route?

如何在 spring-security 5.2 中增加 RemoteJWKSet 缓存 TTL

grail中的多个文件上传

Grails 中基于 RESTful 证书的 (X509) 登录身份验证

如何在 Spring Security 中将令牌转换为身份验证?