我使用以下方式安装Spring安全性插件:
compile ":spring-security-core:2.0-RC4"
在Config.groovy
grails.plugins.springsecurity.auth.loginFormUrl = '/'
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/'
但我无法使用此功能重定向到主页。
那么在哪个地方我错了?
感谢。
答案 0 :(得分:1)
grails.plugins.springsecurity.auth.loginFormUrl = '/'
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/'
在此。您将主页设置为登录URL。现在您必须将登录数据发送到url:' /' 只需删除此字段或使用其他字段。
答案 1 :(得分:1)
Spring Security使用“/”作为默认成功Uri,使用“/ login / ajaxSuccess”作为ajax身份验证。 auth.loginFormUrl提供登录页面url,其默认值为“login / auth”。安全插件使用LoginController.groovy类来管理登录身份验证。
您已为“/”定义了控制器“仪表板”,在您的情况下,对于loginFormUrl和登录成功Url(默认情况下)都是相同的。因此,您需要实现逻辑以重定向到仪表板控制器中的不同位置。或者您可以为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安全插件提供了覆盖许多网址的功能,可在此处找到http://grails-plugins.github.io/grails-spring-security-core/guide/urlProperties.html