我正在尝试让 Spring Security 3.1 中的 Run-As 功能正常工作。奇怪的是,我找不到一个例子。甚至Spring Security Book也根本没有涵盖这个主题。
这是我的应用程序上下文的安全部分。
<security:global-method-security
pre-post-annotations="enabled">
<security:expression-handler ref="customExpressionHandler"/>
</security:global-method-security>
<bean id="runAsManager"
class="org.springframework.security.access.intercept.RunAsManagerImpl">
<property name="key" value="my_run_as_password"/>
</bean>
<bean id="runAsAuthenticationProvider"
class="org.springframework.security.access.intercept.RunAsImplAuthenticationProvider">
<property name="key" value="my_run_as_password"/>
</bean>
<security:http auto-config="true" create-session="always">
<security:remember-me key="njc2"/>
<security:session-management invalid-session-url="/sessionTimeout.html"/>
<security:intercept-url pattern="/**" access="ROLE_USER"/>
<security:form-login login-page='/login.html'
authentication-success-handler-ref="njcAuthenticationSuccessHandler"
authentication-failure-url="/login-failure.html"/>
<security:logout invalidate-session="true" logout-url="/j_spring_security_logout"
logout-success-url="/login.html"/>
</security:http>
在运行时,Spring“神奇地”创建了一个实例,org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor
但不连接 my runAsManager
,因此使用NullRunAsManager
默认创建的实例。
您能否向我展示一个有效的 Spring Security 3.1 示例,该示例演示运行方式和使用 JSR-250 注释,例如@RunAs
?