【问题标题】:Spring security blocks css, js files from being loaded on jsp pageSpring Security 阻止 css、js 文件加载到 jsp 页面上
【发布时间】:2017-02-16 14:17:33
【问题描述】:

我正在使用 Spring Security 进行登录操作,一切正常,但登录页面加载时没有相应的样式表文件。

这是我的 spring-security.xml 配置文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
        xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

        <security:http security="none" pattern="/resources/**"></security:http>
        <security:http security="none" pattern="/resources/css/*"></security:http>
        <security:http security="none" pattern="/resources/js/*"></security:http>

        <security:http auto-config="true">
            <security:intercept-url pattern="/login" access="permitAll"/>
            <security:intercept-url pattern="/entry.html"
                access="hasRole('ROLE_USER')" />
            <security:form-login login-page="/login"
                default-target-url="/entry.html" authentication-failure-url="/login?error"
                username-parameter="username" password-parameter="password" />
            <security:logout logout-success-url="/login?logout"></security:logout>
            <security:csrf/>
        </security:http>

        <security:authentication-manager>
            <security:authentication-provider>
                <security:user-service>
                    <security:user name="user" password="123456"
                        authorities="ROLE_USER"></security:user>
                </security:user-service>
            </security:authentication-provider>
        </security:authentication-manager>

    </beans>

login.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <html>
    <head>
    <title>Login Page</title>
    <link rel="stylesheet" type="text/css"
        href="<%=request.getContextPath()%>/resources/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-4"></div>
                <div class="col-md-4">
                    <div class="login-panel panel panel-default">
                        <div class="panel-heading">
                            <h3 class="panel-title">Login with Username and Password</h3>
                        </div>
                        <div class="panel-body">
                            <c:if test="${not empty error}">
                                <div class="error">${error}</div>
                            </c:if>
                            <c:if test="${not empty msg}">
                                <div class="msg">${msg}</div>
                            </c:if>
                            <form name='loginForm'
                                action="<c:url value='j_spring_security_check' />" method="post">
                                <fieldset>
                                    <div class="form-group">
                                        <input class="form-control" placeholder="Username ..."
                                            name="username" type="text" />
                                    </div>
                                    <div class="form-group">
                                        <input class="form-control" placeholder="Password ..."
                                            name="password" type="password" />
                                    </div>
                                    <div>
                                        <input type="submit" value="Login" class="btn btn-success"
                                            name="submit" />
                                    </div>
                                </fieldset>
                                <input type="hidden" name="${_csrf.parameterName}"
                                    value="${_csrf.token}" />
                            </form>
                        </div>
                    </div>
                </div>
                <div class="col-md-4"></div>
            </div>
        </div>
    </body>
    </html>

我不知道为什么它不加载 css 文件,我试图为资源文件夹中存在的文件提供所有可能的权限,但没有结果。

【问题讨论】:

  • 尝试直接浏览css文件。 href 的路径是否正确?
  • 是的,我用同样的方式访问资源,它工作得很好,我遇到的问题只是 login.jsp

标签: java spring spring-mvc spring-security


【解决方案1】:

将此行添加到 Spring Web 配置中

<mvc:resources mapping="/resources/**" location="/resources/" />

并在你的jsp中添加这一行以包含css

<link href="<c:url value="/resources/css/main.css" />" rel="stylesheet">

为春季安全添加此线 使用xml配置

<http pattern="/resources/**" security="none"/>  

 <intercept-url pattern="/resources/**" filters="none"/>

使用java配置

web.ignoring().antMatchers("/resources/**"); 

【讨论】:

  • 它对我有用,在 url localhost:port/nameproject/resources/css/bootstrap.min.css 中检查它并显示状态代码 http 403 或 404。
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 2016-09-07
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2014-10-26
相关资源
最近更新 更多