我有一个单页应用程序,我想使用spring security。 在spring-security.xml文件中,我必须提供一个url来阻止用户。
例如:
<security:intercept-url pattern="/#cities" access="isAuthenticated"/>
在我尝试无需身份验证时输入此配置
"localhost:8082/project_name/#cities"
它并没有阻止我。我可以访问该页面。
我认为,这是因为URL不是真正的URL。只有一页。 (index.html的)
我该如何解决这个问题?我很不好意思我的英语不好。谢谢!
答案 0 :(得分:1)
您无法在后端保护路由,因为URL中的#符号之后没有任何内容发送到服务器。您可以保护PAGES和ajax端点,但是您无法保护路由(哈希#之后的东西)。
在您的示例网址中,您只能保护网址的/ project_name部分。如果您不希望人们访问/ project_name / #city,那么您需要将其设为不同的页面。
如果您想保护#cities视图,您需要停止该模块呈现给客户端(确保包含#cities代码的.js文件不会被发送到),或者你可以这样做,以便#cities视图必须检索数据并保护ajax端点。