用户成功打开spring security后没有更改
我通过对Config.groovy的以下更改启用了用户开关:用户成功打开spring security后没有更改,spring,grails,spring-security,impersonation,switch-user,Spring,Grails,Spring Security,Impersonation,Switch User,我通过对Config.groovy的以下更改启用了用户开关: grails.plugin.springsecurity.useSwitchUserFilter = true grails.plugin.springsecurity.controllerAnnotations.staticRules = [ '/j_spring_security_switch_user':['ROLE_SWITCH_USER', 'IS_AUTHENTICATED_FULLY' ], '/j_spring_
grails.plugin.springsecurity.useSwitchUserFilter = true
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/j_spring_security_switch_user':['ROLE_SWITCH_USER', 'IS_AUTHENTICATED_FULLY' ],
'/j_spring_security_exit_user': ['permitAll']
]
关于普惠制,我有以下几点:
<sec:ifNotSwitched>
<sec:ifAllGranted roles='ROLE_SWITCH_USER'>
<form action='${request.contextPath}/j_spring_security_switch_user' method='POST'>
Switch to user: <input type='text' name='j_username' />
<input type='submit' value='Switch' />
</form>
</sec:ifAllGranted>
</sec:ifNotSwitched>
切换到用户:
当我进行切换时,我知道它可以工作,因为在我的日志中,我得到:
Attempt to switch to user [newusername]
switchuser.SwitchUserFilter - Could not find original user Authentication object!
switchuser.SwitchUserFilter - Switch User Token [<I see here the username for the user i switched to>]
authentication.AjaxAwareAuthenticationSuccessHandler - Using default Url: /
尝试切换到用户[newusername]
switchuser.SwitchUserFilter-找不到原始用户身份验证对象!
switchuser.SwitchUserFilter-切换用户令牌[]
authentication.AjaxAwareAuthenticationSuccessHandler-使用默认Url:/
然后应用程序将我重定向到springsecurity.switchUser.targetUrl上的URL
到目前为止还不错,但我在应用程序上所做的一切看起来仍然像是原始/模拟用户,而不是我切换到的那个
事实上,我还有另一个普惠制:
<sec:ifLoggedIn>
Logged in as <sec:username />
</sec:ifLoggedIn>
登录为
没有显示任何内容。
有什么想法吗?我假设
找不到原始用户身份验证对象
是解决此难题的重要线索。不是真的,这意味着尝试切换的用户尚未切换到其他用户。我查看了SwithUserFilter类,它基本上检查您在模拟新用户之前是否已经模拟了其他人。我认为问题在于我还使用了RestTokenValidationFilter,并且在成功切换用户后覆盖了身份验证