Grails 2 Spring Security Plugin - 成功登录后重定向到 /login/denied

Posted

技术标签:

【中文标题】Grails 2 Spring Security Plugin - 成功登录后重定向到 /login/denied【英文标题】:Grails 2 Spring Security Plugin - Redirects to /login/denied after successful login 【发布时间】:2012-06-17 22:50:11 【问题描述】:

我的 Spring Security 插件在 Grails 2.0.4 中大部分时间都可以成功运行。如果我转到页面“localhost:8080/dashboard”,我将被重定向到登录屏幕。当我成功登录时,我被重定向到“/dashboard”。

我遇到的问题是,如果我只是转到“localhost:8080/”而不向 URL 添加任何控制器。如果我这样做,那么无论我是否成功登录,我都会被重定向到“/login/denied”。如果我此时尝试转到“/dashboard”,它将工作,因为我是成功登录的用户。

我的问题是如何更改登录后重定向到的默认屏幕。这是我尝试过的。如果我缺少任何东西,请告诉我。除了实际的重定向之外,一切似乎都在工作。

尝试在 URLMappings.groovy 中进行更改

static mappings = 
    "/"(controller: "dashboard")

尝试在 Config.groovy 中进行更改:

grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/dashboard'
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap
grails.plugins.springsecurity.interceptUrlMap = [
    '/dashboard/**': ["IS_AUTHENTICATED_FULLY"],

    '/js/**': ["IS_AUTHENTICATED_ANONYMOUSLY"],
    '/css/**': ["IS_AUTHENTICATED_ANONYMOUSLY"],
    '/images/**': ["IS_AUTHENTICATED_ANONYMOUSLY"],
    '/login/**': ["IS_AUTHENTICATED_ANONYMOUSLY"],
    '/logout/**': ["IS_AUTHENTICATED_ANONYMOUSLY"]
]

这些都没有解决我上面解释的问题。非常感谢任何帮助。

谢谢, 贾里德

【问题讨论】:

【参考方案1】:

答案是在我的 interceptUrlMap 中添加另一个条目:

grails.plugins.springsecurity.interceptUrlMap = [
    '/**': ["IS_AUTHENTICATED_FULLY"]
]

这允许用户访问 URLMappings 中的“/”映射,从而被转发到“/dashboard”。如果没有这个映射,'/' 就没有规则,我们默认阻止它,所以没有机会到达要转发的 URLMappings。

【讨论】:

以上是关于Grails 2 Spring Security Plugin - 成功登录后重定向到 /login/denied的主要内容,如果未能解决你的问题,请参考以下文章

ClassNotFoundException: SimpleGrantedAuthority - Grails 2.4.2 和 Spring Security

Spring Security UI 和 grails 2.0

grails-spring-security-oauth2-provider ClientCredentials filter no processing /oauth/token

Grails spring-security-oauth-google:如何设置

如何使 Grails Spring Security 2.0 中的登录/页面成为初始屏幕?

Grails 2.1.1 和 Spring Security Core 插件