0
我正在使用Spring MVC和安全性,并且我有一个具有2种方法的控制器。一个创建一个网页html,然后就可以做到这一点,并从中制作PDF。传递来自控制器方法的Spring安全认证
@RequestMapping(value = "/getPDFhtml", method = RequestMethod.GET)
public ModelAndView getPDFhtml(HttpServletRequest request) throws Exception {
ModelAndView modelAndView = new ModelAndView("myPDFTemplate");
// do stuff
return modelAndView;
}
@RequestMapping(value = "/createPDFFile", method = RequestMethod.GET)
public ModelAndView createPDFFile(HttpServletRequest request) {
String url = "/getPDFHtml";
String viewHtml = HttpUtil.getHttpRequest(url);
// take viewHtml and turn it into a PDF with iText
// other stuff...
}
我能得到这个工作的唯一途径是打眼在这样的(安全-APP-context.xml中)春季安全
<intercept-url pattern="/getPDFhtml/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
因为tenically,我HttpUtil呼叫是新的sesion。 (这只是Apache HttpClitent.jar的包装)
现在我不需要这样做。我需要访问getPDFhtml()中的AuthenticationTolken,它不在那里,因为它的身份验证非常严格,而且我的经理发现了我的小小缺陷,现在它必须消失。 :(
,所以我需要一种方法要么:
- 能够调用从createPDFFile(getPDFhtml()),并有ModelAndView的自我呈现成HTML字符串(有人告诉我,4个月前那这不是possable,但谁知道)
- 能够调用从createPDFFile getPDFhtml()(),并以某种方式通过jsession ID或认证令牌或任何这样我就可以通过Spring securuity得到正常。
有什么想法?
更好的解决方案通常是注入您正在使用的模板引擎,并直接调用其呈现方法,而不是启动对您的内部服务的往返“外部”调用。 – chrylis
即时通讯都很好,但我怎么在Spring MVC中做到这一点?我假设我正在使用freemarker,但是如何从控制器到达引擎。 – mmaceachran
只需@Autowire它到您的控制器类。 – chrylis