一个想法 method控制权限(未实践)

通过配置spring aop拦截器和advice可以实现对action下面的所有方面进行拦截,假如我们要拦截某个具体的方法,却在配置切入点的时候不成功(我没佩成功!),于是换了2个想法:
1:每次调用的时候携带action方法参数:如:login.action?method=xxxxx;用
String method=request.getParameter("method");获取method参数
2:例外MVC实现的时候不会全部带上method的参数,例如:login.action,这样不带参数的话,Action里面肯定有一个方法叫login的,会默认寻找。(我的理解!),既然这样,我们可以把login 截取下来,也是action要调用的方法!(想了下,这里可能不会唯一,因为可以带参数!)
而且action里面的方法名都是唯一的。这样我们通过数据库设置这些方法的使用权限,然后实现环绕通知来控制访问权限。

希望高手指点指点。不知可行不可行!
如有实践权限控制的,恳请发一份例子yankang.nd@163.com! 谢谢!


笔记:
生成代理类的代码:
Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);

package net.kingbit.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

/**
*
* @author yankang <yankang.nd@163.com>
*/
public class DynamicProxy implements InvocationHandler {

private Object proxyObj;
public DynamicProxy(Object object)
{
this.proxyObj=object;
}

public static Object factory(Object object)
{
Class cls=object.getClass();
System.out.println("cls name:"+cls.getName());
[color=red] return Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),new DynamicProxy(object));[/color]
}

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("DynamicProxy invoke!");
System.out.println("method name:"+method.getName());
System.out.println("proxy class:"+proxy.getClass());
if(args!=null)
{
for(int i=0;i<args.length;i++)
{
System.out.println("args["+i+"] :"+args[i]);
}
}
Object o=method.invoke(proxyObj, args);//java反射调用代理目标类的方法
return o;

}

public static void main(String[] args)
{
List<String> v = null;
// //DynamicProxy dp=new DynamicProxy(new Vector());
v=(List<String>) DynamicProxy.factory(new ArrayList());
//v.isEmpty();
v.add("bbbb");
// Computer cb=null;
// cb= (Computer) DynamicProxy.factory(new ComputerBuy());
// cb.buy();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值