2016-11-25 1 views
-1

Я работаю над разработкой приложения Java, которое работает на Glassfish 4.1 и использует Spring Security 4.2.0 для аутентификации пользователей. Spring Security отлично работает как в моей среде разработки, так и на производственном сервере в течение нескольких месяцев, что означает, что я могу успешно аутентифицировать учетные данные пользователя, хранящиеся на соответствующем сервере (разработка или производство), и перенаправляться на главную страницу приложения после этого.Spring Security 4 Выдает HTTP-статус 404 Ошибка в одной машине, но работает отлично В другом

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

enter image description here

это файлы, которые я использовал для настройки аутентификации Spring Security в моем приложении:

web.xml

<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>/*</url-pattern> 
</filter-mapping> 

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

applicationContext.xml

<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/jee 
    http://www.springframework.org/schema/jee/spring-jee.xsd 
    http://www.springframework.org/schema/security 
    http://www.springframework.org/schema/security/spring-security.xsd"> 

    <http auto-config="true" use-expressions="true"> 
     <intercept-url pattern="/login*" access="permitAll"/> 
     <intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> 
     <form-login 
      login-page="/login.jsp" 
      default-target-url="/BMSim.html" 
      always-use-default-target="true" 
      authentication-failure-url="/login.jsp?error" 
      username-parameter="username" 
      password-parameter="password" /> 
     <logout logout-url="/logout" logout-success-url="/login.jsp?logout" /> 
     <!-- disable csrf protection --> 
     <csrf disabled="true"/> 
     <!-- allow SmartGWT to create frames and call servlets from there --> 
     <headers> 
      <frame-options policy="SAMEORIGIN" /> 
     </headers> 
    </http> 

    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/BMSim" expected-type="javax.sql.DataSource" /> 

    <authentication-manager> 
     <authentication-provider> 
      <jdbc-user-service data-source-ref="dataSource" 
       users-by-username-query="select username,password, enabled from users where username=?" 
       authorities-by-username-query="select username, authority from authorities where username =? " /> 
     </authentication-provider> 
    </authentication-manager> 

</beans:beans> 

login.jsp

<html> 
    <body class="login t_center" onload="document.f.username.focus();"> 
     <form name="f" action="login" method="POST"> 
      <label>user: </label> 
      <input id="username" type="text" name="username" /> 

      <label>password: </label> 
      <input id="password" type="password" name="password" /> 

      <input class="login-button" name="submit" type="submit" value="login"/> 

     </form> 
    </body> 
</html> 

GlassFish-web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app> 
    <context-root>/BMSim</context-root> 
</glassfish-web-app> 

Мы пробовали много разных вещей, но, не будучи экспертами в Spring Security (или любой части структуры Spring, если на то пошло), мы не можем найти проблему.

Любые идеи о том, что может вызывать это странное поведение (работа в некоторых средах, но не в других)?

ответ

0

Это было окончательно решено, и оказалось, что это был конфликт между версией драйвера SQL Server, определенной в pom.xml (v4.2), и фактическим банком, который был помещен в папку lib домена Glassfish (v4 +0,0).

Смежные вопросы