不可不说
随心所欲,无往不利!
posts - 88,  comments - 92,  trackbacks - 0
在一般的Web项目中都多少需要点权限认证什么的,用Spring的福音,SpringFramework出了一个可以进行权限认证的小东西,原先是叫ACEGI,很初级的一个东西,使用起来很麻烦,就像当年的JDBC一样,现在Spring把它大大的包装了一下,叫Spring Security 2,表示一个新面孔的产品,使用起来大大的简化,功能也强大起来,就像现在遍地的ORM比如Hibernate之类的。

说起来,东西虽好,但是用起来还是要慎重,就像一把抢,不要乱用哦。
一般来说SS2用在系统登陆验证方面应当很不错,没什么大问题,支持的验证种类也很多,
想用的尽管用吧。
上面也说过,他的功能很强大,不止局限于登陆验证,还可以对系统所有URL级别的访问进行访问权限控制,以及业务中的方法级进行控制,但是,我们要看到,如果使用这些功能,必然导致性能的下降,很明显,你既然要求它干这些工作,那么,他就任劳任怨的对所有访问系统的URL和方法进行检查,虽然它不怕麻烦,但是,你却必须为此付出不菲的开销,如果验证的规则再稍微那么复杂一点,呵呵,对不起,花销更大。

并不仅仅是SS2有这个问题,所有的这种需求都会导致这种问题,所以,如果你要想用,就必须要慎重。

首先,尽量减少URL和方法验证的规则的简约化,让它在验证的时候,最好一矢中的,不要七拐八拐的才找到目标,要知道每拐一次费用就会增加一倍甚至更多。
其次,尽量减少要验证的URL和方法的数量,这个也很主要,但是有人要问了,明明都是需要验证的怎么减少?这个可以从两个方面来看,对于URL,可以把有相同权限的URL尽量的归并到一个大的组/目录中,对这个上级目录进行控制岂不是就减少了数量?对于方法,尽量对它的更上级进行控制,比如SSH项目中的Manager或者Service中的主方法,而不是DAO中的那些零散的方法。
再次,分散权限检查到其它部分,虽然SS2可以做所有的检查,但是也不是非要他做不可,比如一些业务权限划分明确的一些业务模块,可以把这些模块通过目录菜单等的方式或者权限标签的方式,控制他们的显示和不显示,从而降低无权限的角色对权限以外的资源的请求,从而降低底端的验证开销。还有就是不要把多个权限的操作放到一个页面中,尽量拆分开,一种权限一个页面,让菜单来控制它,也能降低开销。
最后,如果你的这个系统服务器很强大,访问量很低,比如一个用户量很少的OA什么的系统,根本不在乎什么性能上的这点开销,那你还等什么,统统给他加上,即显示出来你们的产品功能的强大,又满足了客户的变态要求,何乐而不为?

posted on 2008-06-17 10:54 蓝剑 阅读(2658) 评论(2)  编辑  收藏

FeedBack:
# re: Spring Security 2在Web项目中的应用杂谈[未登录]
2008-07-11 17:13 | Security
# re: Spring Security 2在Web项目中的应用杂谈
2009-01-19 11:09 | 大雁
说得有道理,顶一个!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 


<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(6)

随笔分类(62)

随笔档案(90)

文章档案(9)

相册

友情链接

搜索

  •  

积分与排名

  • 积分 - 324141
  • 排名 - 172

最新评论

阅读排行榜

评论排行榜