Grails Spring Security - 登录后总是重定向到特定页面?
Posted
技术标签:
【中文标题】Grails Spring Security - 登录后总是重定向到特定页面?【英文标题】:Grails Spring Security - Always redirect to specific page after login? 【发布时间】:2014-07-21 21:06:25 【问题描述】:我有一个使用 spring 安全插件进行身份验证的 grails 应用程序。如果我的会话过期,并且我单击应用程序中的链接,它会将我带到登录屏幕,然后尝试重定向到我之前所在的页面。
我想将 spring security 配置为始终重定向到主页而不是用户单击的最后一页。是否有控制此行为的设置?
【问题讨论】:
【参考方案1】:除了设置defaultTargetUrl
,您还需要告诉 Spring Security 强制使用该默认目标 URL。你的Config.groovy
应该是这样的:
grails.plugins.springsecurity.successHandler.alwaysUseDefault = true
grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/home'
如果需要,您可以使用 SavedRequestAwareAuthenticationSuccessHandler 的 Spring Security API 文档研究更多选项。
更新:
更高版本的插件使用grails.plugin
而不是grails.plugins
【讨论】:
我看到this answer 也使用successHandler.alwaysUseDefaultTargetUrl
设置,但我们需要那个吗? bean中的属性值is set from alwaysUseDefault
它可能是在最近的版本中合并的。我没看过,但很有可能。我将编辑答案以反映这一点。
看起来像,虽然我也看到 1.x version also uses the same way 最近的版本。
我想更多的是旧版本的 Spring Security 有两个设置,但我明白你关于插件提供的包装器的观点。
其实,我刚刚想通了...该属性应该以grails.plugin
开头,而不是grails.plugins
。一旦多余的 's' 被删除,它就像我希望的那样工作。【参考方案2】:
我正在使用 grails 2.4.4,它应该是:
grails.plugin.springsecurity.successHandler.alwaysUseDefault = true
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/your-url'
代替:
grails.plugins.springsecurity.successHandler.alwaysUseDefault = true
grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/your-url'
【讨论】:
【参考方案3】:是的,有一个设置successHandler.defaultTargetUrl
(默认为根上下文)
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/home'
其中/home
表示到主页的路由。
【讨论】:
这个设置似乎对我看到的行为没有影响。如果会话已过期,用户仍会被重定向到他们单击的页面,而不是此属性中指定的页面。 是的,我假设grails.plugins.springsecurity.successHandler.alwaysUseDefault
设置为 true
,因为您之前在成功登录时进行了重定向。 @迈克尔以上是关于Grails Spring Security - 登录后总是重定向到特定页面?的主要内容,如果未能解决你的问题,请参考以下文章
grails-spring-security-rest 插件和悲观锁定
Grails + spring-security-core:用户登录后如何分配角色?