我最近在我的MVC系统中实现了spring security。实现之后,JS和CSS没有被加载(给出404错误)。
spring security XML:
<global-method-security secured-annotations="enabled" />
<http pattern="/**/*.css" security="none" />
<http pattern="/**/*.js" security="none" />
<http pattern="/**/*.png" security="none" />
<http pattern="/**/*.jpg" security="none" />
<http pattern="/**/*.gif" security="none" />
<http pattern="/resources/**" security="none" />
<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true" entry-point-ref="authenticationEntryPoint">
<!-- Dashboard & resources -->
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/loginRequest**" access="permitAll" />
<intercept-url pattern="/logout**" access="permitAll" />
<intercept-url pattern="/dashboard**" access="permitAll" />
<intercept-url pattern="/resources**" access="permitAll" />
<!-- Incoming Product -->
<intercept-url pattern="/incomingProduct**" access="hasRole('Administrator') and hasRole('Local_Administrator') and hasRole('Supervisor') and hasRole('Manager')" />
<!-- Maintanence pages -->
<intercept-url pattern="/depotUser**" access="hasRole('Administrator') and hasRole('Local_Administrator')" />
<intercept-url pattern="/product**" access="hasRole('Administrator') and hasRole('Local_Administrator') and hasRole('Supervisor') and hasRole('Manager')" />
<intercept-url pattern="/productOwner**" access="hasRole('Administrator') and hasRole('Local_Administrator') and hasRole('Supervisor') and hasRole('Manager')" />
<intercept-url pattern="/storageTank**" access="hasRole('Administrator') and hasRole('Local_Administrator') and hasRole('Supervisor') and hasRole('Manager')" />
<intercept-url pattern="/admin**" access="hasRole('Administrator')" />
<!-- access denied page -->
<access-denied-handler error-page="/error/403" />
<form-login
login-page="/"
login-processing-url="/loginRequest"
default-target-url="/dashboard/home"
authentication-failure-url="/loginPage?invalidLogin=Yes"
username-parameter="username"
password-parameter="password"
/>
<logout logout-success-url="/logout" />
<!-- enable csrf protection -->
<csrf />
<custom-filter before="FORM_LOGIN_FILTER" ref="authenticationFilter"/>
</http>
我在调度的servlet XML中定义了我的资源路径:
<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/" />
我包括我的JS和CSS如下:
<script src="./resources/plugins/jQuery/jQuery-2.1.4.min.js"></script>
<!-- Bootstrap 3.3.2 JS -->
<script src="./resources/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<!-- Bootstrap 3.3.4 -->
<link href="./resources/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
我认为我在这里忽略了一些错误。
任何人都可以帮助我吗?
提前谢谢。
答案 0 :(得分:1)
尝试在页面上添加这行代码来使用jstl核心库。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
而不是使用它。
<script src="./resources/plugins/jQuery/jQuery-2.1.4.min.js"></script>
尝试使用它。
<script src="<c:url value="/resources/plugins/jQuery/jQuery-2.1.4.min.js"/>"></script>
答案 1 :(得分:0)
我认为您指的是<mvc:resources .../>
中的错误位置。
如果所有js / css文件都在<mvc:resources location="/resources/" mapping="/resources/**"/>
目录下,则应为src\main\webapp\resources
。
请参阅此answer。