user3686208
user3686208

Reputation: 45

Spring security core plugin - How to access User id from a controller

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() 
}

Upvotes: 0

Views: 63

Answers (1)

Burt Beckwith
Burt Beckwith

Reputation: 75671

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()
   }
}

Upvotes: 1

Related Questions