An error message occurred when I'm trying to get current login user id from controller.
Error message: Message No signature of method: static grails.plugin.springsecurity.SpringSecurityService.getCurrentUserId() is applicable for argument types: () values: [] Possible solutions: getCurrentUserId(), getCurrentUser()
package com.testapp
import grails.plugin.springsecurity.annotation.Secured
import grails.plugin.springsecurity.SpringSecurityService
@Secured('IS_AUTHENTICATED_FULLY')
class TestController {
def myAction(){
def user = SpringSecurityService.getCurrentUserId()
}
The method isn't static, so you need to add a dependency injection for the singleton Spring bean and call it as an instance method on that:
package com.testapp
import grails.plugin.springsecurity.annotation.Secured
import grails.plugin.springsecurity.SpringSecurityService
@Secured('IS_AUTHENTICATED_FULLY')
class TestController {
SpringSecurityService springSecurityService
def myAction() {
long userId = springSecurityService.getCurrentUserId()
}
}