我使用Spring MVC和thymeleaf进行开发。
我试图使用sec:authorize来加载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:authorize加载,但它们似乎每次加载页面时都会处理。这是使用sec:authorize的有效方法吗?我不是,有没有办法做到这一点?
答案 0 :(得分:0)
isAuthenticated()可能会返回ROLE_ANONYMOUS,这是一个合法的角色,因此它返回true并呈现你的脚本。
这里有一个很好的解释,为什么用户可以通过匿名进行身份验证(这反过来会破坏你的逻辑)Why is the 'anonymousUser' authenticated in Spring Security?
为了规避这一点,并特别建议您希望具有特定访问权限的用户需要角色,例如ROLE_USER,ROLE_ADMIN。
希望有所帮助。