gpt4 book ai didi

java - Spring MVC + Before Advice 检查安全性

转载 作者:行者123 更新时间:2023-11-30 06:36:23 28 4
gpt4 key购买 nike

我正在测试 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";
}

我想在建议方面创建之前检查用户 session 中的用户安全性。

@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 方法的执行并导致 Controller 返回任何其他值而不是“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 的这一部分 documentation .

关于java - Spring MVC + Before Advice 检查安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4907072/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com