使用sec:authorize加载javascript

时间:2015-06-02 21:31:58

标签: javascript spring-mvc spring-security thymeleaf

我使用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的有效方法吗?我不是,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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

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

希望有所帮助。