使用 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 可以用于多个角色吗