权限系统设计与实现
功能:能够提供客户强大而又灵活的权限控制方案;并且易于与其他系统无缝结合。
实现技术:Struts 2.X+Hibernate;
实现方法以及关键代码:
作为一个要投入使用的系统,它必须有明确的功能;比如:这个系统能够做哪些事情,这些事情是不是每个系统使用者都能够做还是只有特定的系统使用者能够使用?
这个系统所能够做的事情可以抽象为某个程序中的某个类的某个方法;判断系统用户能否使用这个类的这个方法可以交给Web控制层来决策;Web控制层一般意义指的是Servlet,不过我们完全可以自己延伸;比如:我们自己编写一个代理类,这个代理类能够在调用具体实现类的某个方法之前可以而外增加一些权限验证代码用于判断此次调用是否允许;Struts2框架就为我们提供了一个很方便的类似于以上功能的特征:拦截器机制;假如整个系统我们是利用Struts2框架的话,我们就可以很轻松的将Action中的方法名作为全县标示存进数数据库中,然后将此权限表与用户表形成简单的多对多关系就可以轻松的实现灵活而又具备可扩展性的权限控制系统,当然在此基础上完全可以进行功能扩展比如:增加组权限等较复杂的权限控制功能。
用户请求操作时,首先将请求参数给服务器,服务器收到之后再委托给Struts2中的中心控制器(Dispatcher),然后接着执行对应的拦截器联,我们的权限拦截器就是这个联中的一环,他会从获取用户请求的Action名并和用户所拥有权限做比较,看看是否包含用户此次请求的那个方法描述,有的话就会通过继续下面的处理,没有的话就会直接转向权限不够等错误信息提示界面。
代码:权限控制拦截器:
拦截器配置文件:
用户权限的加载发生在用户登录的时候:
下面是权限表以及用户表的Hibernate配置文件:
权限配置文件:
用户配置文件:
用户与权限配置文件:
<!--EndFragment-->