我刚刚安装了Grails 3.0.8,创建了一个应用程序,并安装了Spring-Security-core插件,其版本为3.0.0.M1。然后,我按照插件tutorials的步骤进行操作。
但是,身份验证效果不佳。这意味着我无法访问顶级目录页面http://localhost:8080,始终会在页面上显示错误消息。错误消息是“抱歉,您无权查看此页面。”。
如何让插件运行良好?
以下步骤是我做的。
使用命令创建应用
$ grails create-app testApp profile=web
$ cd testApp
通过将插件添加到build.gradle
来“安装”插件dependencies {
…
compile 'org.grails.plugins:spring-security-core:3.0.0.M1'
…
}
以交互模式运行编译命令。
$ grails
grails> compile
grails> exit
使用交互模式创建用户和角色域类。
$ grails
grails> s2-quickstart common User Role
编辑grails-app / init / BootStrap.groovy以添加测试用户。
import com.testapp.Role
import com.testapp.User
import com.testapp.UserRole
class BootStrap {
def init = { servletContext ->
def adminRole = new Role('ROLE_ADMIN').save()
def userRole = new Role('ROLE_USER').save()
def testUser = new User('me', 'password').save()
UserRole.create testUser, adminRole, true
}
}
以交互模式启动服务器。
grails> run-app
在用户字段输入“me”,在密码字段输入“password”,然后单击“提交”。
然后,消息显示在页面上
Sorry, you're not authorized to view this page.
注意:
application.groovy如下所示,但我没有做任何改动。
// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'common.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'common.UserRole'
grails.plugin.springsecurity.authority.className = 'common.Role'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/error': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/shutdown': ['permitAll'],
'/assets/**': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]