Spring 具有 Backbone 个 URL 的安全性

Spring Security with Backbone URLs

我有一个单页应用程序,我想使用 spring 安全性。 在 spring-security.xml 文件中,我必须给一个 url 来阻止用户。

例如:

<security:intercept-url pattern="/#cities" access="isAuthenticated"/>

当我尝试不验证进入时进行此配置后

"localhost:8082/project_name/#cities" 

这并没有阻止我。我可以访问该页面。

我认为,这是因为 URL 不是真实的 URL。只有一页。 (index.html)

我该如何解决这个问题?我很抱歉我的英语不好。谢谢!

您无法在后端保护路由,因为在 URL 中的 # 符号之后没有任何内容被发送到服务器。您可以保护 PAGES 和 ajax 端点,但不能保护路由(哈希# 之后的内容)。

在您的示例 url 中,您只能保护 URL 的 /project_name 部分。如果您不希望人们访问 /project_name/#cities,那么您需要将其设为不同的页面。

如果您想保护#cities 视图,您需要停止该模块呈现给客户端(确保包含#cities 代码的 .js 文件不会被发送),或者您可以做到这一点,以便 #cities 视图必须检索数据并保护 ajax 端点。