这是从AuthenticationManager获取结果的解决方案;
上下文部分(所拥有内容的简化版本)
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <security:http auto-config="true"> <security:intercept-url pattern="/**" access="ROLE_USER"/> </security:http> <security:authentication-manager> <security:authentication-provider> <security:user-service> <security:user name="test" password="test" authorities="ROLE_USER"/> </security:user-service> </security:authentication-provider> </security:authentication-manager> <aop:aspectj-autoproxy proxy-target-/> <bean /></beans>
和切入点
package de.incompleteco.spring.aspect;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.springframework.security.core.Authentication;@Aspectpublic class AuthenticationManagerAspect { @AfterReturning(pointcut="execution(* org.springframework.security.authentication.AuthenticationManager.authenticate(..))" ,returning="result") public void after(JoinPoint joinPoint,Object result) throws Throwable { System.out.println(">>> user: " + ((Authentication) result).getName()); }}从AuthenticationManager返回身份验证对象后,这将允许您访问身份验证对象。



