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

httprequest, java, principal, spring, spring-mvc

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

Problem

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?

Original source