我们应该使用啥来代替 Spring Security 的 JSP 标签库来在 HTML 页面中的客户端具有安全性?
Posted
技术标签:
【中文标题】我们应该使用啥来代替 Spring Security 的 JSP 标签库来在 HTML 页面中的客户端具有安全性?【英文标题】:What we should use instead of Spring Security's JSP tag library to have security in client side in HTML pages?我们应该使用什么来代替 Spring Security 的 JSP 标签库来在 HTML 页面中的客户端具有安全性? 【发布时间】:2017-04-14 21:06:04 【问题描述】:正如您在项目中知道的那样,UI 是 html
页面而不是 jsp
(类似于 jhipster 应用程序),我们不能使用 Spring Security 的 JSP 标记库。在客户端拥有安全性的最佳策略是什么?
例如在 jsp 页面中,我使用此代码根据用户访问权限显示或隐藏简单按钮:
<sec:authorize access="hasRole('supervisor')">
<button type="button"></button>
</sec:authorize>
现在,如何在 html 页面中执行此操作?
【问题讨论】:
JHipster 应用程序仅将 Thymeleaf 用于电子邮件消息而不用于网页,它们是基于 Angular 构建的单页应用程序。所以你的问题不应该用 jhipster 标记,否则答案是错误的。 【参考方案1】:看看Thymeleaf
,尤其是its Spring Security integration Guide。
【讨论】:
没错,JHipster 使用 Thymeleaf,所以 HTML 文件实际上是模板,这是经过处理的,Thymeleaf 有一个安全命名空间。 @Klaus Groenbaek : 不是你,伙计,我有 2 个赞成票和第 3 个反对票,我可以在我的个人资料中看到它,所以要求解释【参考方案2】:如果您的视图是一个简单的 html 页面,则无法访问 servlet 上下文(或 spring 安全相关状态)。
JHipster 中的 html 文件不是普通的 HTML 文件,它们是 Thymeleaf 模板。 JHipster 生成一个 Spring 启动应用程序,当 thymeleaf 在类路径中时,它将是默认的视图解析器。
如果您对一个简单的示例感兴趣,可以克隆以下存储库https://bitbucket.org/Klaus_Groenbaek/performance.git。 “有状态”模块有一个简单的基于表单的登录,它使用 thymeleaf 模板和 Spring 安全性。对 thymeleaf 安全命名空间的引用位于 /stateful/src/main/resources/templates/navigation.html
【讨论】:
以上是关于我们应该使用啥来代替 Spring Security 的 JSP 标签库来在 HTML 页面中的客户端具有安全性?的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 1.9 中我应该使用啥来代替 syncdb?