Spring Security Filter с собственной формой не работает - PullRequest
0 голосов
/ 24 мая 2018

Я совершенно новичок в stackoverflow и безопасности Spring.У меня есть веб-сайт с функцией входа в систему.Работает стандартная форма входа в Spring от Spring Security (на основе класса DefaultLoginPageGeneratorFilter).

Теперь я хочу реализовать свою собственную форму пользовательского дизайна на основе файла .jsp.Это выглядит следующим образом:

...    
<form name="f" method="post" action="/login">
        <h2>    Sign In</h2>
        <label>User Name:</label><br> <input id="username" type="text" name="<%=UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY%>" placeholder="Enter Username"><br> <label>Password:</label><br>
        <input type="password" name="<%=UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY%>" placeholder="Enter Password"><br>
        <button>SIGN IN</button>
        </br> <a href="">Forgot Password?</a>
        <h2>New User</h2>
        <button name="submit" type="submit">SIGN UP</button>
</form>
...

Тем не менее, моя форма отображается на веб-сайте, но если я нажимаю на кнопку отправки, возвращается 404.Я думаю, что моя конфигурация внутри spring.xml неверна:

<beans:import resource="../security-formAuth.xml" />

<http use-expressions="true">
    <intercept-url pattern="/Webapp/login.jsp"
        access="isAnonymous() or isAuthenticated()" />
    <intercept-url pattern="/**" access="isAuthenticated()" />

<custom-filter ref="formAuthenticationFilter" before="FORM_LOGIN_FILTER"/>

    <form-login login-page='/Webapp/login.jsp'
        default-target-url="/Webapp/login.jsp" authentication-failure-url="/Website/index.html" />

</http>


<beans:bean class="game.security.filter.PasswordLoginFilter"
    id="formAuthenticationFilter">
    <beans:property ref="authenticationProvider" name="authenticationManager" />
    <beans:property name="filterProcessesUrl" value="/login" />
    <beans:property name="authenticationSuccessHandler">
        <beans:bean
            class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler">
            <beans:property name="defaultTargetUrl" value="/Website/categoryLevels.html" />
        </beans:bean>
    </beans:property>
    <beans:property name="authenticationFailureHandler">
        <beans:bean
            class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
            <beans:property name="defaultFailureUrl" value="/login.jsp" />
        </beans:bean>
    </beans:property>
</beans:bean>

<authentication-manager>
    <authentication-provider>
        <user-service>
            <user name="user1" password="test" authorities="ROLE_USER" />
        </user-service>
    </authentication-provider>
</authentication-manager>

Похоже, мой фильтр PasswordLoginFilter вообще не вызывается:

    public class PasswordLoginFilter extends UsernamePasswordAuthenticationFilter {

    @Override
    public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
            throws AuthenticationException {

        return super.attemptAuthentication(request, response);
    }

}

Я часами пытался найти решение, но не могу решить проблему самостоятельно.Если вам нужны какие-либо дополнительные файлы, пожалуйста, сообщите мне.

Спасибо за вашу помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...