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

在做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(或判断是否为数据库中既定权限),否则会出现登录/注销无权限的问题;



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值