我们应该使用啥来代替 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 页面中的客户端具有安全性?的主要内容,如果未能解决你的问题,请参考以下文章

GUITexture 已弃用,那么我应该使用啥来代替它?

我应该使用啥来代替已弃用的 `onerror` 属性?

在 Django 1.9 中我应该使用啥来代替 syncdb?

我应该使用啥来代替 clutter_score_new?

在 iOS7 中,我应该使用啥来代替已弃用的 GKLeaderboardViewController?

在从 C++ 转换为 C# 的代码中,我应该使用啥来代替 memcpy?