找不到 grails /login/impersonate 页面
Posted
技术标签:
【中文标题】找不到 grails /login/impersonate 页面【英文标题】:grails /login/impersonate page not found 【发布时间】:2021-06-23 22:08:06 【问题描述】:我正在使用 grails spring-security-core 和 spring-security-ui 插件,但无论我做什么,我都无法让切换用户工作,我总是得到:
错误:找不到页面 (404) 路径:/login/impersonate
我的 application.groovy 中有这个:
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
......
[pattern: '/login/**', access: ['permitAll']],
[pattern: '/logout/**', access: ['permitAll']],
[pattern: '/login/impersonate', access: ['permitAll']],
[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>
并试图以这种方式切换用户。但无论我做什么,我都会得到 page not found 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
【问题讨论】:
【参考方案1】:尝试使用:
grails.plugin.springsecurity.useSwitchUserFilter = true
不是:
grails.plugin.springsecurity.switchUser.useSwitchUserFilter = true
【讨论】:
请尝试解释答案背后的基本原理以及为什么它会解决问题。 是的,你是对的。我一定是从某个地方复制了另一个,但它是错误的。以上是关于找不到 grails /login/impersonate 页面的主要内容,如果未能解决你的问题,请参考以下文章
grails发布插件错误“找不到加载插件资源[spring.resources]的类”
使用 grails 2.2.0 和资源插件找不到自定义 jquery css 图像