【发布时间】:2016-09-26 16:02:43
【问题描述】:
我的 Spring Boot 应用程序基本上由两个主要“模块”组成:
- 由静态 HTML 页面组成的“Web”模块,可供公众(未经身份验证/匿名用户)使用;和
- 由多个动态页面组成的“App”模块,每个页面都需要(基于 Spring Security)身份验证才能访问
基本的应用结构是:
-
index.html:主页,映射自http://localhost:8080/ -
about.html:关于页面,映射自http://localhost:8080/about -
contact.html:联系页面,映射自http://localhost:8080/contact -
login.html:登录页面,映射自http://localhost:8080/login -
dashboard.html:登录后进入的仪表板/登录页面,映射自http://localhost:8080/account -
http://localhost:8080/account/*下的所有其他页面将是具有典型@RequestMapping映射的 MVC/动态页面
我不清楚的是,对于静态(“公共网络”)HTML 页面,我是否:
- 只需使用基于标准控制器的
@RequestMappings来呈现一些 Thymeleaf/Handlebars 模板(由于内容是静态的,因此没有数据模型)?还是我: - 将这些页面视为静态内容(与 CSS/JS 相同)并将它们作为static content as Spring Boot prescribes 提供服务?如果这是正确的选项,那么我如何实现正确的 URL 映射(例如,用户可以转到
http://localhost:8080/contact而不是http://localhost:8080/contact.html)?
【问题讨论】:
-
你在认证中使用了什么技术?
-
感谢 @KamelMili (+1) - Spring Security,可能带有自定义身份验证/授权领域。
-
如果您喜欢我的解决方案,spring security 可以使用 web 忽略或 ant matcher 处理您的问题使这些页面与 thymeleaf 一起使用,因为在这些静态网页中,有一个由 thymeleaf 和 spring security 处理的身份验证表单,所以如果我正确理解了您的问题,您需要将它们添加到您的 mvc 解析器并将 web 忽略添加到这些页面,这样您就可以无需认证即可访问
-
再次感谢@KamelMili (+1) - 是的,如果您发布的答案显示了如何使用 spring 安全性、这个 mvc 解析器和 web 忽略的具体代码示例,我会欣然接受!再次感谢!
标签: spring-boot static-content