使用 sec:authorize 加载 javascript

Posted

技术标签:

【中文标题】使用 sec:authorize 加载 javascript【英文标题】:Use of sec:authorize to load javascript 【发布时间】:2015-08-16 21:21:22 【问题描述】:

我正在使用 Spring MVC 和 thymeleaf 进行开发。 我正在尝试。换句话说,我只希望在用户通过身份验证时加载此脚本。 这是我要开始工作的代码:

<script src="/js/jquery.min.js"
        th:src="@/js/jquery.min.js"></script>
        <script src="/js/submit.js"
        th:src="@/js/submit.js"></script>
        <script src="/js/url.js"
        th:src="@/js/url.js"></script>

        <!-- admin -->
        <script sec:authorize="isAuthenticated()" src="/js/jquery.simplemodal-1.4.4.js"
        th:src="@/js/jquery.simplemodal-1.4.4.js"></script>
        <script sec:authorize="isAuthenticated()" src="/js/admin.js"
        th:src="@/js/admin.js"></script>

我正在尝试使用 sec:authorize 加载最后两个资源,但它们似乎在我每次加载页面时都能处理。这是使用 sec:authorize 的有效方式吗?如果不是,有什么办法吗?

【问题讨论】:

这对您有帮助吗? ***.com/questions/23348341/… - 可能你缺少一些 thymeleaf 配置 我没有使用 isAuthenticated(),而是使用了您提供的链接上发布的 hasRole('ROLE_ADMIN') 并且它有效。我应该删除我的问题吗? (*** 上的新功能)。 【参考方案1】:

isAuthenticated() 可能返回 ROLE_ANONYMOUS 这是一个合法角色,因此它返回 true 并呈现您的脚本。

这里很好地解释了为什么用户可以通过匿名身份验证(这反过来又破坏了你的逻辑)Why is the 'anonymousUser' authenticated in Spring Security?

为了规避这一点并特别建议您希望用户具有特定访问权限,需要角色,例如 ROLE_USER、ROLE_ADMIN。

希望对您有所帮助。

【讨论】:

谢谢,尽管它有效,但我一直想知道为什么,这非常有用。正确的方法是:

以上是关于使用 sec:authorize 加载 javascript的主要内容,如果未能解决你的问题,请参考以下文章

在 jsp 页面中使用标签 <sec:authorize> 在 eclipse 中显示错误

在 sec:authorize thymeleaf 标记中连接字符串和变量

如何使用 sec:authorize with thymeleaf 向特定用户授权 html 元素?

sec:authorize from thymeleaf 可以用于多个角色吗

sec:authorize 在 Spring 启动应用程序中使用 Thymeleaf 时未按预期工作

sec:authorize 对 Spring Security 不起作用