我们还在项目中创建了一个自定义注释。您需要完成一些面向方面的编程。
首先,您需要创建自己的注释来标记您的方法,如下所示:
public @interface CustomSecurityAnnotation {}
然后,您必须编写在执行方法时触发的逻辑。您为此写了一个 方面 。
@Aspect@Componentpublic class CustomSecurityAspect { @Pointcut("@annotation(my.package.CustomSecurityAnnotation)") private void customSecurityAnnotation() { } @Around("my.package.CustomSecurityAspect.customSecurityAnnotation()") public Object doSomething(ProceedingJoinPoint pjp) throws Throwable { HttpServletRequest req = getRequest(); // Check header values // Throw Spring's AccessDeniedException if needed return pjp.proceed(); } private HttpServletRequest getRequest() { ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); return sra.getRequest(); }}
如您所见,我已经包含了一种检索当前HTTP请求的方法,因此您可以轻松地检索要检查的标头。
如果是
AccessDeniedException,Spring会自动将响应状态代码设置为HTTP 403。
不要忘记
@EnableAspectJAutoProxy在您的
@Configuration课程中启用来启用方面。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)