javaspringspring-mvchttprequestprincipal

How to get logged user name/Principal in Spring MVC REST channel?


I have Spring MVC REST channel:

@Controller
@RequestMapping("/rest")
public class REST {

and I have my method:

@RequestMapping(value = "/doSomething")
public @ResponseBody DoSomethingResultDTO doSomething(
    @RequestBody DoSomethingRequestDTO)

Now I need the name of the user that is logged in. Normally I could do it by the method

HttpServletRequest.getUserPrincipal()

but how to get it here? I have annotations for headers (@RequestHeader), or even cookies (@CookieValue). But how can I get the Principal in my method?


Solution

  • You can inject Principal object to your controller handler method

    @RequestMapping(value = "/doSomething")
    public @ResponseBody DoSomethingResultDTO doSomething(
        @RequestBody DoSomethingRequestDTO, Principal principal)
    

    See the spring reference manual for more info