我实际上有两个与春天安全相关的问题。
1,我的控制器中有以下代码用于更改密码
def changePassword() {
if (!securityService.isLoggedIn()) {
redirect(action: 'auth', controller: 'login')
return
}
}
当我确认新密码后按下保存按钮时,它会生成以下错误
NullPointerException occurred when processing request: [POST]
Cannot invoke method isLoggedIn() on null object.
现在我的问题是我错在哪里?
2,我的第二个问题也是类似的,我试图让当前的用户像这样
User currentUser = securityService.getCurrentUser()
currentUser.gender = gender
currentUser.save()
但它仍然会产生同样的错误 无法在null对象上调用方法getCurrentUser()
注意: - 我使用的是grails 2.4.4和spring security 2.0-RC4。
更新: - 我确实在我的控制器/服务中加入了def securityService
答案 0 :(得分:1)
SpringSecurityService以这种方式自动装配到控制器:
def springSecurityService
使用Groovy,您可以拨打springSecurityService.currentUser
而不是getCurrentUser()
答案 1 :(得分:1)
只需在控制器中添加'def springSecurityService'
即可Class UserController{
def springSecurityService
def changePassword(){
//You can access springSecurityService now
if (!springSecurityService.isLoggedIn()) {
redirect(action: 'auth', controller: 'login')
return
}
}
}