gpt4 book ai didi

spring - 本地主机与公共(public) IP 地址上的不同身份验证

转载 作者:行者123 更新时间:2023-12-02 04:47:34 26 4
gpt4 key购买 nike

我遇到了一个类似于 this one 的问题但我没有使用 AJAX 进行登录/身份验证。

当我访问我的本地 Tomcat 7 实例时,我可以在用户未登录时正确地将此 block 评估为 true:

<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>

但是,当我将其部署到我们的公共(public) QA 和公共(public)生产实例并隐藏按钮时,它的计算结果为 false。我还尝试更改对 !isAuthenticated() 的访问,但行为没有改变。

我正在使用 Spring 4.1.0.RELEASE 和 Spring Security 3.2.4.RELEASE。我不完全确定,但在以前的 Spring 版本中可能没有这种行为。

什么会导致服务器之间的代码块评估不同?

更新:

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>

编辑:还尝试了 Spring Security 3.2.8.RELEASE,但没有成功。

最佳答案

此问题已由一位开发人员通过更新 web.xml 以在文件的较高位置包含 Spring Security 过滤器链来解决:

<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 文件。

关于spring - 本地主机与公共(public) IP 地址上的不同身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31577995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com