Spring MVC +在建议之前检查安全性

我正在测试Spring AOP框架并提出以下问题。

我有以下代码:

package danny.test.controllers; @Controller public class MyController{ @Autowired private DaoService service; @RequestMapping(value="/save",method = RequestMethod.POST) public String addUser(@Valid MyClass myClass, BindingResult result){ service.save(myClass); return "Ok"; } 

我想在Advice方面之前创建以检查用户会话中的用户安全性。

 @Aspect public class Profiler { @Pointcut("execution(* danny.test.services.DaoServices.*.*(..))") public void methods(){} @Before("methods()") public void checkSecurity() throws Throwable{ //check session if user is authenticated.... } } 

我不知道该怎么做是取消执行DaoServices.save方法,如果用户未经过身份validation并导致控制器返回任何其他值而不是“ok”。

我可以做吗? 有人能指出我这样的例子吗? 我可以使用@Around建议进行此类操作吗?

是的,我认为您应该使用@Around建议,如果身份validation失败,则不要调用ProceedingJoinPoint.proceed()方法。

更新:

要返回其他内容,您的方法应如下所示:

 @Before("methods()") public Object checkSecurity(ProceedingJoinPoint pjp) throws Throwable{ if (/*user is authenticated*/) { return pjp.proceed(); } else { return "NOT OK"; } } 

请注意该方法返回一个对象。 另请参阅Spring 文档的这一部分。