我正在使用Spring MVC和thymeleaf进行开发。
我试图使用sec:授权加载javascript。换句话说,我只希望在用户通过身份验证时加载此脚本。下面是我想要开始工作的代码:
<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>
这最后2个资源,我试图使用sec:授权加载,但他们似乎处理每次我加载页面。这是使用sec:authorize的有效方法吗?如果不是,有什么办法可以做到吗?
isAuthenticated()可能返回ROLE_ANONYMOUS,这是一个合法的角色,因此它返回true并呈现您的脚本。
这里很好地解释了为什么用户可以通过匿名身份验证(这反过来又打破了你的逻辑)在Spring Security中验证?
为了避免这种情况,并特别建议您需要具有特定访问权限的用户,需要角色如ROLE_USER, ROLE_ADMIN。
希望对你有帮助。