Spring security 在控制器中生成有效的hdiv url

Spring security 在控制器中生成有效的hdiv url,spring-security,hdiv,Spring Security,Hdiv,我已经成功地将SpringBoot2.0.4配置为在HDIV中使用SpringSecurity。 我决定使用jquerydatatable作为表呈现技术。 问题来了。。。 对于我的数据表的每一行,我想创建一个用_HDIV_STATE_u参数签名的详细链接。在控制器中迭代我的项目列表时,如何生成有效链接 通用控制器: @Controller public class ItemController { .... @GetMapping(value = "/test") publ

我已经成功地将SpringBoot2.0.4配置为在HDIV中使用SpringSecurity。 我决定使用jquerydatatable作为表呈现技术。 问题来了。。。 对于我的数据表的每一行,我想创建一个用_HDIV_STATE_u参数签名的详细链接。在控制器中迭代我的项目列表时,如何生成有效链接

通用控制器:

@Controller
public class ItemController {

   ....

   @GetMapping(value = "/test")
   public @ResponseBody test() {
      List<Item> items = service.getList();
      items.foreach(item -> {
         item.setDetailUrl(HDIV_GENERATED_URL);
      })
    }

   ...

  }
@控制器
公共类ItemController{
....
@GetMapping(value=“/test”)
public@ResponseBody测试(){
List items=service.getList();
项目。foreach(项目->{
item.setDetailUrl(HDIV_生成的_URL);
})
}
...
}

谢谢

您可以在控制器中注入LinkUrlProcessor类

@autowired
LinkUrlProcessor linkUrlProcessor;
并调用
processUrl
方法

String processedUrl linkUrlProcessor.processUrl(request, originalUrl);

processedUrl
将包含
\u HDIV\u STATE\u
参数

好的,此解决方案仅适用于带有pathvariable的ULR

@Autowired
ServletContext context;

public @ResponseBody String test() {
  int id = 1;
  LinukUrlProcessor lup = HDIVUtil.getLinkUrlProcessor(context);
  RequestContextHolder rch =HDIVUtil.getRequestContext(context);
  //This works perfectly
  String processedWithPath = lup.processUrl(rch, "/test" + id);
  //This produce a _HVID_STATE_ but query param always 0
  String processedWithQuery = lup.processUrl(rch, "/test?id=" + id);
  return ....
}

是否有进一步的帮助来生成带有查询参数的有效url?

查询参数值始终为0,因为“机密性”功能已激活。参数值为0的链接应该可以正常工作。如果你想看到真正的价值,取消保密。