Я попытался сделать безопасность на основе аспекта для контроллеров, но когда я пытаюсь использовать свою аннотацию - это не работает. Но когда я пытаюсь аннотировать более глубокие методы обслуживания - все работает отлично.@Controller
public class HomeController {
@Autowired
private AccountService accountService;
@Loggable
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(Principal principal, HttpSession session) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (!(authentication instanceof AnonymousAuthenticationToken)) {
String email = authentication.getName();
Account acc = accountService.findByEmail(email);
session.setAttribute("user", acc);
}
return principal != null ? accountService.findByEmail(principal.getName()).getRole().equalsIgnoreCase("ROLE_ADMIN") ? "/home/adminSignedIn" : "home/homeSignedIn" : "home/homeNotSignedIn";
}
< /code>
аннотация < /p>
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value=RUNTIME)
// @Documented
//@Documented
@Component
public @interface Loggable {
}
< /code>
Аспект класс < /p>
@Aspect
@Component
public class Logger {
Logger logger = LoggerFactory.getLogger("test");
@Around("@annotation(com.proj.server.aspect.log.Loggable)")
public Object traceMethod(ProceedingJoinPoint pjp) throws Throwable {
MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod();
String methodName = signature.getDeclaringTypeName() + "#" + method.getName();
logger.info("START : " + methodName);
Object o = pjp.proceed();
logger.info("END : " );
return o;
}
}
< /code>
pom.xml
4.0.0
com.proj.web
proj
war
version
proj
UTF-8
${project.build.sourceEncoding}
1.7
1.7.4
1.7.5
1.0.13
2.1.3.RELEASE
2.1.1.RELEASE
java.net2
Repository hosting the jee6 artifacts
http://download.java.net/maven/2
sonatype-oss-repository
https://oss.sonatype.org/content/groups/public/
true
true
repository.spring.milestone
Spring Milestone Repository
http://repo.spring.io/milestone
org.springframework
spring-framework-bom
4.0.3.RELEASE
pom
import
org.springframework.security
spring-security-bom
4.0.0.M2
pom
import
org.springframework
spring-aop
cglib
cglib
3.1
aspectj
aspectjrt
1.5.4
org.springframework
spring-test
test
org.springframework
spring-core
org.springframework
spring-context
commons-logging
commons-logging
org.springframework
spring-webmvc
org.springframework.security
spring-security-config
org.springframework.security
spring-security-web
org.springframework.security
spring-security-taglibs
org.thymeleaf
thymeleaf
${org.thymeleaf-version}
org.thymeleaf
thymeleaf-spring4
${org.thymeleaf-version}
org.thymeleaf.extras
thymeleaf-extras-springsecurity3
${org.thymeleaf.extras.springsecurity3-version}
org.springframework
spring-jdbc
org.springframework
spring-tx
org.springframework
spring-orm
org.hibernate
hibernate-core
4.3.6.Final
postgresql
postgresql
9.1-901-1.jdbc4
org.springframework.data
spring-data-jpa
1.4.1.RELEASE
javax.validation
validation-api
1.0.0.GA
org.hibernate
hibernate-validator
4.3.0.Final
org.aspectj
aspectjrt
${org.aspectj-version}
org.aspectj
aspectjweaver
1.8.4
org.slf4j
slf4j-api
${org.slf4j-version}
org.slf4j
jcl-over-slf4j
${org.slf4j-version}
runtime
ch.qos.logback
logback-classic
${ch.qos.logback-version}
javax.inject
javax.inject
1
org.apache.geronimo.specs
geronimo-servlet_3.0_spec
1.0
provided
org.codehaus.jackson
jackson-mapper-asl
1.9.9
com.google.guava
guava
14.0.1
Подробнее здесь: https://stackoverflow.com/questions/272 ... er-methods
AspectJ не работает на Spring @controller Methods ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение