You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Rest控制器中获取动态HTML模板URL的实现方案

动态模板访问URL生成落地方案

核心逻辑先明确:通过ModelAndView绑定数据返回的视图是请求触发时服务端动态渲染的,不存在预生成的固定访问地址,你只需要给对应视图配置可公开访问的映射规则,就能生成可直接访问的URL,不需要改造原有渲染逻辑。


方案1:带签名校验的带参路径(实现成本最低,适合快速上线)

  • 给需要短信触达的动态页面单独开放一个GET类型的无鉴权接口,路径示例:/api/public/sms/content/view
  • 接口参数不要裸传业务ID,必须加防篡改签名:把业务数据ID、接收短信的用户ID、链接过期时间戳三个字段拼接后,用服务端存储的私有密钥做HMAC-SHA256签名生成sign字段,最终拼接的URL格式为:
    https://你的业务域名/api/public/sms/content/view?bizId=123&userId=456&expireAt=1718000000&sign=xxxxxx
    
  • 接口内部逻辑直接复用你原有组装ModelAndView的代码:收到请求先验签、判断链接是否过期,校验通过就查询对应业务数据填充Model,返回你已经配置好的动态模板即可;校验不通过直接返回「链接已失效/无访问权限」的提示页。
  • 关键提醒:绝对不能省略签名校验步骤,否则任何人都可以通过遍历参数批量爬取你的页面数据

方案2:预生成短链映射(安全性更高,适合敏感业务场景)

  • 新建一张短链映射表,核心字段包含:非顺序唯一短码、关联业务ID、关联用户ID、过期时间、创建时间,不要用自增ID作为短码,避免被遍历猜测。
  • 触发短信发送的业务节点中,先生成6-8位的唯一短码(可通过雪花ID转62进制实现),把短码和渲染页面需要的所有业务参数关联存入数据库。
  • 配置统一的短链访问接口,路径示例:/s/{shortCode},接口收到请求后先根据短码查库,校验短码是否存在、是否过期、访问用户是否匹配,校验通过就复用原有ModelAndView组装逻辑返回动态页面,校验失败返回失效提示。
  • 最终生成的URL格式为https://你的业务域名/s/xxxxxx,没有明文业务参数,长度更短,不会出现短信里链接被截断的问题,也更难被恶意爬取。

避坑说明

  • 不需要提前把ModelAndView渲染成静态HTML文件存到服务器,除非你确定页面内容生成后永远不会变更,否则后续业务数据更新时静态页内容无法同步,会出现数据不一致问题。
  • 短信内的链接域名必须完成备案,否则会被运营商拦截导致用户收不到短信。
  • 所有短信触达的公开链接必须设置有效期,不要生成永久有效的公开访问地址,避免数据泄露风险。
  • 如果你用的是Thymeleaf、Freemarker等模板引擎,原有视图配置完全不需要改动,只要把Model数据组装的逻辑复用到新的公开接口即可,开发量极小。

内容的提问来源于stack exchange,提问作者Whiteox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 02:31:14