这个05年,开年就懒了一把,到今天才提起劲来润一把我的blog
开年的前两周就接踵几件不顺心的事,不过很快就过去了。
事情顺不顺,关键还是看自己怎么看,就象我自己前两天还安慰Eidde,“有什么事情大不了的呢?”
呵呵
工作上,主要研究并运用了Authorization,.NET Sink,AOP 几样技术。
授权上有几点体会
(1)授权(Authorization)和验证(authentiaction)是两码子事....
(2)一个系统的授权,针对各自需求的特点会对应不同的模型,模型不可能是完美的。一个授权模型,要什么都去考虑的话,你这个模型估计也没办法用了。
(3)在我们这个UI + BizLogic分布的系统里面,在客户端授权验证还是在服务器端授权验证,也是个需要权衡的东西。就象Montaque说了,在服务器端考虑授权,就可以不需要考虑UI是什么实现的,扩展方便点。但是为什么要让客户点了一个按纽,逻辑到服务器去跑一趟才回来,才告诉客户你没有权限呢?尤其象我们这个UI操作密集型系统,我想还是用户体验更重要点,所以最后决定主要在客户端实现权限验证。
(4)在服务器端(host BizLogic+DB Access),权限和业务逻辑是需要明确分离的,最好是在接口层或者控制层有对授权逻辑的倚赖性,在业务逻辑层,一定不要产生对权限的倚赖性(举个例子,两个不同地方的客户享有不同的购物折扣,拜托不要把这两种客户分成不同的Role,用客户自带的Location标志去进行判断就好了)。
用.NET Sink实现AOP,听起来是美的,问题也是有的
(1)是把Sink挂到Remoting里面,还是把Sink挂到RemotingObject的ContextAttribute里面
(2)效率降低,配制导致的逻辑分散,灵活性的损失....