2015-07-23 5 views
3

У меня есть проблема, которая кажется чем-то вроде this one, но я не использую AJAX для входа/аутентификации.Различная аутентификация на localhost vs общедоступного IP-адреса

Когда доступ к моему локальный экземпляр Tomcat 7, я могу правильно оценить этот блок в верно, когда пользователь не вошел в систему:

<security:authorize access="!isFullyAuthenticated()"> 
     <div class="col-xs-12 col-md-2 login_button"> 
      <a href="${pageContext.request.contextPath}/login"><button class="btn btn-success" style="line-height: 1.42857"><spring:message code="label.logIn"/> <i class="fa fa-sign-in"></i></button></a> 
     </div> 
</security:authorize> 

Однако, это имеет значение ложь, когда я развернуть его на нашей общественной QA и экземпляры публичного производства, скрывая кнопку. Я также попытался изменить доступ к !isAuthenticated(), но поведение не изменилось.

Я использую Spring 4.1.0.RELEASE и Spring Security 3.2.4.RELEASE. Я не совсем уверен, но, возможно, не было такого поведения в предыдущей версии Spring.

Что может вызвать разницу в оценке кода блока между серверами?

UPDATE:

Spring безопасности конфигурации:

<?xml version="1.0" encoding="UTF-8"?> 
<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" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
       http://www.springframework.org/schema/security 
       http://www.springframework.org/schema/security/spring-security-3.2.xsd"> 

    <beans:bean id="authSuccessHandler" class="com.companyname.web.RoleBasedAuthenticationSuccessHandler" /> 

    <http auto-config="true" use-expressions="true"> 
    <form-login login-page="/login" 
     authentication-success-handler-ref="authSuccessHandler" 
     authentication-failure-url="/login?login_error=true" 
     login-processing-url="/j_spring_security_check" /> 
    <intercept-url pattern="/sample/**" access="hasAnyRole('ROLE_SAMPLE','ROLE_CO_SAMPLE')" /> 
    <intercept-url pattern="/other/**" access="hasAnyRole('ROLE_OTHER', 'ROLE_CO_OTHER','ROLE_SAMPLE','ROLE_CO_SAMPLE')" /> 
    <logout logout-success-url="/index" /> 
    </http> 

    <authentication-manager alias="authenticationManager"> 
    <authentication-provider user-service-ref="myUserDetailsService"> 
     <password-encoder ref="passwordEncoder" /> 
    </authentication-provider> 
    </authentication-manager> 

    <beans:bean id="myUserDetailsService" 
      class="com.companyname.service.UserDetailsServiceImpl" /> 

    <beans:bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/> 

    <global-method-security secured-annotations="enabled" pre-post-annotations="enabled"> 
     <expression-handler ref="expressionHandler"/> 
    </global-method-security> 

    <beans:bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler"> 
     <beans:property name="permissionEvaluator"> 
      <beans:bean id="permissionEvaluator" class="com.companyname.web.security.MethodsPermissionEvaluator"/> 
     </beans:property> 
    </beans:bean> 
</beans:beans> 

EDIT: попытался также Spring Security 3.2.8.RELEASE, но не повезло.

ответ

0

Эта проблема была решена разработчиком собрата по обновлению web.xml, чтобы содержать Spring Security Filter Chain выше в файле:

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <servlet-name>Spring Security Filter Chain</servlet-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

Мы также должны были убедиться, что обновленный файл был развернут к правильной среде. Расхождения в средах приписываются различным файлам web.xml для каждой среды.

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