Я совершенно новичок в 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);
}
}
Я часами пытался найти решение, но не могу решить проблему самостоятельно.Если вам нужны какие-либо дополнительные файлы, пожалуйста, сообщите мне.
Спасибо за вашу помощь:)