您的位置:首页 > 其它

【技术/方案摘要】——权限功能的实现(SSH)

2017-02-18 10:22 232 查看
在做OA系统时,发现一个比较重要且比较难的功能——权限管理,相信也是以后工作中比较常用的模块,故以此博客记录。

一、权限模块主要功能:

1、超级用户拥有所有权限功能,普通用户通过超级用户分配对应权限;

2、普通用户如果通过url来访问自身不具备的权限,则无权进入,返回提示页面;

二、权限模块的实现:

1、使用自定义类进行初始化数据,利用Hibernate的Session保存权限实体类的关联关系(上下级),使用自定义类来初始化数据的好处在于,利用了Hibernate的跨数据库特征,而不用针对不同数据库使用不同SQL添加数据);

2、定义监听器(Listener),在服务器初始化时,将所有权限读取并置于application域中,便于前端取值显示;

3、通过判断登录用户(session中)的权限,来显示对应的权限列表,使用<s:if>判断,并且在用户中增加判断权限的方法;

4、通过判断登录用户(session中)的权限,来显示对应的权限超链接,此处由于使用了struts2的自定义标签<s:a> ,暂定最优办法为修改该标签的源码,修改自定义标签库主要关注: doStartTag() 和doEndTag() ,标签类中的逻辑: 经过对用户的判定,来决定该超链接是否显示,return super.doEndTag() 或者 return EVAL_PAGE;

5、拦截每个action请求,判断用户是否有权限访问,定义拦截器(Intercepetor),在拦截器类中判断用户权限,拥有权限则放行;

注意点:在某些请求,例如登录和注销,该权限为公有权限,非特有权限,故需要判断拦截的action,躲开登录action(或判断是否为数据库中既定权限),否则会出现登录/注销无权限的问题;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: