使用grails更改Spring安全插件中的登录页面

使用grails更改Spring安全插件中的登录页面,grails,spring-security,grails-plugin,Grails,Spring Security,Grails Plugin,我使用以下方式安装Spring安全插件: compile ":spring-security-core:2.0-RC4" 在Config.groovy grails.plugins.springsecurity.auth.loginFormUrl = '/' grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/' 但是我不能用这个重定向到主页 那么在哪一点上我错了呢 谢谢 grails.plugins.spri

我使用以下方式安装Spring安全插件:

compile ":spring-security-core:2.0-RC4"
Config.groovy

grails.plugins.springsecurity.auth.loginFormUrl = '/'
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/'
但是我不能用这个重定向到主页

那么在哪一点上我错了呢

谢谢

grails.plugins.springsecurity.auth.loginFormUrl = '/' 
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/'
在这方面。您可以为登录设置主页的url。现在您必须将登录数据发送到url:“/” 只需删除此字段或使用其他字段。

Spring Security使用“/”作为默认成功Uri,使用“/login/ajaxSuccess”进行ajax身份验证。auth.loginFormUrl提供的登录页面url默认值为“login/auth”。安全插件使用LoginController.groovy类来管理登录身份验证

您已经为“/”定义了控制器“dashboard”,在您的情况下,它对于loginFormUrl和登录成功Url(默认情况下)都是相同的。因此,您需要实现逻辑以重定向到dashboard controller中的不同位置。或者,您可以为loginURL和successUrl使用不同的URL

根据角色定义控制器类并实现逻辑

def springSecurityService

def index() {
    User user = springSecurityService.currentUser
    if (user) {
        if (user.authoritiesInString.contains(Authorities.ROLE_ADMIN)) {
            render "admin login "
        } else if (user.authoritiesInString.contains(Authorities.ROLE_USER)) {
            render "user login"
        }
    } else {
        redirect(uri: '/login')
    }

}
在URLmapping.groovy中定义“/”的映射,这是默认的成功处理程序

static mappings = {
    "/$controller/$action?/$id?(.$format)?"{
        constraints {
            // apply constraints here
        }
    }
    "/login" controller: 'login', action: 'auth'

    "/" controller: 'main', action: 'index'


}

Spring安全插件提供了覆盖许多url的功能,这些url可以在我的UrlMappings.groovy文件I set/(controller://dashboard)中找到。但页面没有重定向。因为您将spring安全性映射到此url。只需删除或编辑问题的最后两行,然后重试