Java Spring安全性:通过无法访问bean的接口对同一bean的自定义预授权方法
我正在尝试做类似的事情(这很有效) 然而,当MyService实现了一个接口并且我通过接口调用execute时,我得到了一个异常 在控制器处(参考) 例外情况:Java Spring安全性:通过无法访问bean的接口对同一bean的自定义预授权方法,java,spring,spring-mvc,spring-security,spring-aop,Java,Spring,Spring Mvc,Spring Security,Spring Aop,我正在尝试做类似的事情(这很有效) 然而,当MyService实现了一个接口并且我通过接口调用execute时,我得到了一个异常 在控制器处(参考) 例外情况: org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 11): Method call: Method hasAccessOnResource(java.lang.String) cannot be found on com.sun.proxy
org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 11): Method call: Method hasAccessOnResource(java.lang.String) cannot be found on com.sun.proxy.$Proxy52 type
我做错了什么?这是正确的方法吗?如果我想对这个接口方法进行预授权,我需要采取什么方法?检查
公共布尔hasAccessOnResource(String str)
是否也在接口中声明您是对的!非常感谢。我当然犯了那个错误!这与spring安全性无关。
@Controller
@Scope("session")
public class HomeController {
@Autowired
@Qualifier("myService")
MyServiceInterface service; // <- doesn't work case
//MyService service; <- working case
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(HttpSession session)
{
service.execute("hello");
return "home";
}
}
@Service("myService")
@Scope("session")
public class MyService implements MyServiceInterface{
public boolean hasAccessOnResource(String str)
{
return true;
}
@PreAuthorize("@myService.hasAccessOnResource(#str)")
@Override
public void execute(String str)
{
System.out.println("hello");
}
}
org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 11): Method call: Method hasAccessOnResource(java.lang.String) cannot be found on com.sun.proxy.$Proxy52 type