自定义属性(Attribute)在面向方面编程(AOP)的使用

我现在是做一个WebMethod的属性,希望得到这样的效果
[SoapHeader("myToken")]
[myPermission]
[WebMethod]
public string Hello()
{
return "hello";
}

其中,myToken记录的是客户端登陆后获取的令牌, 而myPermission负责监测myToken是否在当前的登陆Token Hash表中,并检查该Token所指向的用户是否有权限运行“Hello()”这个WebMethod,如果他有,就允许Hello()执行,否则就抛出AccessDeined的异常。

现在,已经通过SOAPHeader属性获取了myToken了,剩下的问题是如何在myPermission这个属性中获取myToken的值了。

---------------------------------------------------------------

可以使用Attribute做这样的事情,只不过由于MyAttribute类的构造函数在编译阶段执行而不是运行阶段,所以不能把验证代码放在MyAttribute类里面
而应该放在使用这个函数的入口
使用反射查看调用函数的Attribute,进而验证执行权限之类
这个算是"被动的AOP",和AOP的本意区别比较大

Published At
Categories with Web编程
Tagged with
comments powered by Disqus