Есть следующие способы сделать это:
1) Пружинная защита @PreAuthorize("isAuthenticated()")
или @Secured("ROLE_ADMIN")
См. нить для получения дополнительной информации
2) Вы можете создать собственную аннотацию, добавить аспект с помощью SecurityContextHolder
, отметьте ее:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Authenticated {
}
import org.aspectj.lang.annotation.Aspect;
@Aspect
@Component
public class AuthenticatedAspect {
@Around("@annotation(Authenticated)")
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
if (!SecurityContextHolder.getContext().getAuthentication().isAuthenticated()) {
throw your exeption
}
return joinPoint.proceed();
}
}
Для второго подхода вам, вероятно, потребуется добавить proxy-target-class="true"
<aop:aspectj-autoproxy proxy-target-class="true"/>