j_security_check недоступен - PullRequest
1 голос
/ 24 ноября 2011

Я использую Spring 3.0, и я пытаюсь заставить свою страницу входа работать, но я получаю эту ошибку

The requested resource (/myapp/j_spring_security_check) is not available.

Я публикую содержимое всех своих файлов, которые имеют отношение к безопасности.Надеюсь, этого будет достаточно.При необходимости я могу показать больше.

Вот мой web.xml

    <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>*.html</url-pattern>
</filter-mapping>

Моя страница входа:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Login Page</title>
<style>
.errorblock {
color: #ff0000;
background-color: #ffEEEE;
border: 3px solid #ff0000;
padding: 8px;
margin: 16px;
}
</style>
</head>
<body onload='document.f.j_username.focus();'>
<h3>Login with Username and Password (Custom Page)</h3>

<c:if test="${not empty error}">
    <div class="errorblock">
        Your login attempt was not successful, try again.<br /> Caused :
        ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
    </div>
</c:if>

<form name='f' action="<c:url value='j_spring_security_check' />"
    method='POST'>

    <table>
        <tr>
            <td>User:</td>
            <td><input type='text' name='j_username' value=''>
            </td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type='password' name='j_password' />
            </td>
        </tr>
        <tr>
            <td colspan='2'><input name="submit" type="submit"
                value="submit" />
            </td>
        </tr>
        <tr>
            <td colspan='2'><input name="reset" type="reset" />
            </td>
        </tr>
    </table>

</form>

и мой контекст безопасности

<beans:bean id="passwordEncoder"
    class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
    <beans:constructor-arg value="256" />
</beans:bean>

<beans:bean id="saltSource"
    class="org.springframework.security.authentication.dao.ReflectionSaltSource">
    <beans:property name="userPropertyToUse" value="id" />
</beans:bean>

<authentication-manager alias="authenticationManager">
    <authentication-provider ref="authProvider" />
</authentication-manager>

<beans:bean id="authProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <beans:property name="userDetailsService" ref="personService" />
    <beans:property name="passwordEncoder" ref="passwordEncoder" />
    <beans:property name="saltSource" ref="saltSource" />
    <beans:property name="includeDetailsObject" value="true" />
</beans:bean>

<beans:bean id="authenticationProcessingFilterEntryPoint"
    class="org.springframework.security.web.authentication.AuthenticationProcessingFilterEntryPoint">
    <beans:property name="forceHttps" value="false" />
    <beans:property name="loginFormUrl" value="/login.html" />
</beans:bean>
<http entry-point-ref="authenticationProcessingFilterEntryPoint" auto-config="true">
        <intercept-url pattern="/**" access="ROLE_USER" />
        <intercept-url pattern="/login.html" filters="none" />
        <form-login login-page="/login.html" default-target-url="/welcome.html"
            authentication-failure-url="/loginfailed.html" />
        <logout logout-success-url="/logout" />
    </http>

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 19 января 2012

.html определенно необходим для того, чтобы настроить фильтр. Правильным способом было бы объявить шаблон URL в файле web.xml в /*.

Если вы собираетесь сохранить шаблон url как * .html, возможно, стоит рассмотреть возможность добавления атрибута login-processing-url к вашему элементу form-login, чтобы, если кто-то вернется и изменил файл web.xml из-за этой причуды все не рухнет.

<form-login login-page="/login.html" default-target-url="/welcome.html"
        authentication-failure-url="/loginfailed.html" login-processing-url="j_spring_security_check.html"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...