没有 Spring 标记库 (JSTL) 的 Spring Security

Posted

技术标签:

【中文标题】没有 Spring 标记库 (JSTL) 的 Spring Security【英文标题】:Spring Security without Spring Tag Library (JSTL) 【发布时间】:2014-05-01 20:49:06 【问题描述】:

我们有一个使用 Spring Security 和 JSP 的典型 Web 应用程序。我们使用标准的 Spring Security 标签库来显示/隐藏、允许/限制基于用户角色的网页部分。

现在我们要更改 JSP 部分并编写一个完整的基于 javascript 的客户端。

    有没有办法通过 Javascript 获得标签库提供的类似功能。 如果不是,在 Javascript 中实现我们自己的机制时我们应该担心哪些事情。

谢谢, 伊什

【问题讨论】:

【参考方案1】:

如果您的问题是“Spring Security 是否有与 JSP 标签等效的 Javascript”,那么答案肯定是“否”。明显的区别是 Javascript 在客户端运行,而 JSP 在服务器上执行,因此您不能仅仅依靠使用 Javascript 库隐藏敏感信息,因为这不安全。

Javascript 客户端完全不同,安全性很可能在您向其公开的 API 中实现,以允许它从服务器检索数据。它将包括应用于 URL 和服务器端方法的安全约束,而不是与显示技术有任何关系,因此在某些方面它比 JSP 安全更容易测试和推理,因为它与实际显示分离代码。

【讨论】:

感谢您的回复。因此,如果我的应用程序中有一个名为“管理”项目的菜单,它只能供服务器管理员访问,我应该向每个用户展示它,并在请求到达服务器端后显示一条消息“你不被允许”,如果他/她不是管理员。 不,我会说您只会向具有管理员角色的人显示该项目。如果您使用的是类似 REST 的 API,那么菜单可能是对服务器的请求的结果,而您返回的链接将取决于用户的角色。

以上是关于没有 Spring 标记库 (JSTL) 的 Spring Security的主要内容,如果未能解决你的问题,请参考以下文章

JSTL核心标签

检查使用 JSTL/Spring-MVC 标签关于 Spring Binding 错误

Java学习标准标签库JSTL

spring开发中常见错误集合,逐步添加

如何使用 SP 密钥库 spring saml 中的证书

JSP常用标签——JSTL标签和EL表达式