对业务方法的保护,spring security提供了MethodSecurityInterceptor这种拦截器进行处理。这样进行方法调用的时候就能够进行安全处理了。但问题是:
如果用户不是用spring的getbean方式获取对象的话,这种业务方法保护不久失效了吗?
ApplicationContext ctx =
WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
bill obj = (bill)ctx.getBean("bill");
String get=obj.getBill(null);
String CallAddfromSpring;
try{
CallAddfromSpring=obj.addBill(null);//[b]这样调用是不成功的,因为通过MethodSecurityInterceptor禁止该用户访问add方法[/b]
}catch (Exception e){
CallAddfromSpring=" CallAddfromSpring Exception";
}
bill test=new BillImpl();
String DirectCallAdd=test.addBill(null);//[b]这样调用就是成功的。由于是直接生成的对象,我对add方法的保护失效了[/b]。
这样的安全机制算合理的吗?