找不到 grails /login/impersonate 页面

问题描述

我正在使用 grails spring-security-core 和 spring-security-ui 插件,但无论我做什么,我都无法让切换用户工作,我总是得到:

错误:找不到页面 (404) 路径:/login/impersonate

我的 application.groovy 中有这个:

grails.plugin.springsecurity.controllerAnnotations.staticrules = [
 ......
[pattern: '/login/**',access: ['permitAll']],[pattern: '/logout/**',[pattern: '/login/impersonate',[pattern: '/logout/impersonate',access: ['permitAll']]
}

(我知道非常开放的权限,但只是想让它工作。)我也尝试添加

grails.plugin.springsecurity.interceptUrlMap = [
    [pattern: '/login/impersonate',access: ['permitAll']]
]

我在 application.groovy 中有这个设置:

grails.plugin.springsecurity.switchUser.useSwitchUserFilter = true 
grails.plugin.springsecurity.ui.switchUserRoleName = 'ROLE_SWITCH_USER'

并且要加倍确定我把它放在我的 application.yml 中:

grails:
    plugin:
        springsecurity:
            switchUser:
                useSwitchUserFilter: true
                ui:
                    switchUserRoleName: 'ROLE_SWITCH_USER'

我尝试使用角色为 ROLE_ADMIN 和 ROLE_SWITCH_USER 的用户登录,然后单击 spring-security-ui gui 插件中的标准“以用户身份登录”。我试过在浏览器中访问 http://localhost:8080/login/impersonate 。我试过将其添加页面

<sec:ifAllGranted roles='ROLE_SWITCH_USER'>
    <form action='/login/impersonate' method='POST'>
        Switch to user: <input type='text' name='username'/> <br/>
        <input type='submit' value='Switch'/>
    </form>
</sec:ifAllGranted>

并试图以这种方式切换用户。但无论我做什么,我都会得到页面未找到 404。

我尝试查看 spring-security-core 插件的源代码,但 LoginController.groovy 没有 impersonate() 方法。我猜它使用了一些魔法来到达 Spring 的 SwitchUserFilter。我试过在那里设置断点,但它似乎并没有停止。

在所有其他方面,grails spring 安全插件似乎运行良好且符合预期。但我被难住了。

使用 grails 4.0.9,org.grails.plugins:spring-security-core:4.0.3,org.grails.plugins:spring-security-ui:4.0.0.M1

解决方法

尝试使用:

grails.plugin.springsecurity.useSwitchUserFilter = true 

不是:

grails.plugin.springsecurity.switchUser.useSwitchUserFilter = true 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...