Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Spring Boot Microservice的参数主体具有空值,以及如何获取客户端应用程序具有的实际值?_Java_Json_Spring_Spring Boot_Principal - Fatal编程技术网

Java 为什么Spring Boot Microservice的参数主体具有空值,以及如何获取客户端应用程序具有的实际值?

Java 为什么Spring Boot Microservice的参数主体具有空值,以及如何获取客户端应用程序具有的实际值?,java,json,spring,spring-boot,principal,Java,Json,Spring,Spring Boot,Principal,在Spring Boot中,我有以下microservice,它需要主体对象,以便访问登录的用户信息: @RequestMapping(value="/circular-save") public Boolean saveCircularView(HttpServletRequest request, Principal principal, HttpSession session, Locale locale, ModelAndView mav,

在Spring Boot中,我有以下microservice,它需要主体对象,以便访问登录的用户信息:

        @RequestMapping(value="/circular-save")
        public Boolean saveCircularView(HttpServletRequest request, Principal principal, HttpSession session, Locale locale, ModelAndView mav,
                @ModelAttribute CircularsBean souqBean) {


            System.out.println( "circular-save microservice Called...........principal="+principal);

            //some user related code here that depends on principal
    }
输出:

circular-save microservice Called.....................principal=null
我将上述微服务称为:

System.out.println("Will call circulars with principal:"+principal.getName());
restTemplate.getForObject("http://localhost:8081/circular-save", Boolean.class);
输出:

Will call circulars with principal:travelling.salesman
如您所见,主体值在客户端不为null,但在服务器端为null。如何在微服务之间正确地传递此主体对象

我的研究:

起初,我考虑在json请求中传递它并使用POST方法,但我失败了,因为它不是POJO,也不可能序列化它

我做了更多的研究,发现这行代码可以写在服务器端

principal = SecurityContextHolder.getContext().getAuthentication();
不幸的是,上面的解决方案给了我不同的对象,导致匿名用户与原始用户不同


我将感谢任何帮助。谢谢。

主体是请求参数吗?另外,您正在执行一个
http.get
@R.G,我不确定它是否被称为请求参数,但它与其他参数一起出现,例如Spring中的请求和会话。是的,我正在使用http.get,这有什么问题吗?使用
get
时,需要在URI中传递参数。我建议你尝试一个帖子,因为在这里微服务是另一个webapp。主体只有在您成功验证请求时才可用。JWT是实现这一目标的一种方法。请参考这个。使用JWT,当您使用令牌请求其他微服务时,第二个webapp中的将验证令牌并设置主体。