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";
}
我想在“建议之前”方面创建以检查用户会话中的用户安全性。
@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方法的执行,并导致控制器返回任何其他值而不是“ ok”。
我可以做吗?有人可以指出我的例子吗?我可以使用@Around建议进行此类操作吗?
问题答案:
是的,我认为您应该使用@Around建议,并且ProceedingJoinPoint.proceed()
如果身份验证失败,则不要调用该方法。
更新:
要返回其他内容,您的方法应如下所示:
@Before("methods()")
public Object checkSecurity(ProceedingJoinPoint pjp) throws Throwable{
if (/*user is authenticated*/) {
return pjp.proceed();
} else {
return "NOT OK";
}
}
请注意,该方法返回一个对象。另请参阅Spring
文档的这一部分。