权限管理,一般指通过在系统中设置的安全策略,用户可以访问而且只能访问自己被授权的系统资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。 因此很多人,常将“用户身份认证”、“密码加密”、“系统管理”等概念与权限管理概念混淆。

本篇文章主要说的是网站的权限管理实现,通过过滤URL或控制方法执行来进行限制。

通过利用Filter,对所有进入的URI进行解析,并取得当时Session中的User信息,然后通过RBAC的机制,将此链接需要的权限与用户拥有的权限进行比较,然后进行相应的处理。这种做法有很多好处:简单,容易实现,并且对系统侵入性也不强。这里URL就是RBAC中的资源了。

这样做的缺点是所有对数据的操作必须通过URL来体现,这一点在现代的程序中不太好实现。如果采用Struts, XWork或者Tapestry,采用同一个URL(浏览器看来)进行处理多项任务已不是什么稀奇的事。这时候同一个url里功能对应的角色不同,就不能通过URL过滤了。

通过AOP控制,在上一篇中就有提到,通过使用AOP可以精确控制到每一个执行方法的权限,也就是说小到一个按钮触发的业务也可以进行控制,并且由于AOP的切面管理可以对每一个细节功能做到方便的调配。不过AOP无法做到像Filter那样对网页进行过滤,只能对网页中的每一个细节功能进行控制,所以某种程度上来说Filter和AOP结合可以让权限管理得到最大的灵活度。