我已经将我的Spring安全插件从 Spring -security-core:1.2.7.2升级到 Spring -security-core:2.0-RC2,我的应用程序使用Grails 2.3.7
升级后,我相应地更改了导入,因此所有编译错误都得到了修复,但在运行我的应用程序后,当我试图访问它http://localhost:8080/login/auth
时,我得到了异常:由:groovy.lang.MissingPropertyException: No such property: id for class: org.springframework.security.core.userdetails.User
作为身份验证。GSP是使用自定义标签库和代码一样的if(springSecurityService.principal!="anonymousUser")user = SecUser.get(springSecurityService.principal.id)
这里说的是没有这样的属性:id为类:org.springframework.security.core.userdetails.User
直到我可以看到你想要的是检索当前登录的用户id,有一个特殊的助手,只获得用户id "loadCurrentUser()"
我将grails spring安全核心插件中的这段代码粘贴到loadCurrentUser()节
class SomeController {
def springSecurityService
def someAction() {
def user = springSecurityService.isLoggedIn() ? springSecurityService.loadCurrentUser() : null
if (user) {
CreditCard card = CreditCard.findByIdAndUser(params.id as Long, user)
…
}
…
}
}
希望对大家有帮助