北软实训之二

在北软实训这里,我完成了第一个自己手动完成的模块,权限管理模块,揭开了权限管理的神秘面纱。想想权限管理,既在意料之外,又在情理之中。

1.       首先,在用户登录的时候将ID放入session之中。

由于其他组员使用ajax进行交互的所以把id值返回,document.login.userID.value=result; 将在主界面之中将,userID加入其中。

2.       在页面上应用ognl表达式@com.bjsoft.oa.action.AclAction@hasPermission(#session.userID,'ORG','UPDATE') 调用这个action的静态方法 –hasPermission 这个方法会返回一个bool值,通过对这个bool值的判断,可以决定模块是否应该显示出来。

在action中,由于是静态方法,在调用的这个方法的时候,不会初始化这个类,所以里面有些在spring配置的工具类就不会被实例化,所以我们得手工的到spring的applicationContext中去加载这个类,首先,获取web工程的上下文,WebApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext()) 然后通过ctx.getBean("aclService") 来加载这个需要的类。

3.       然后往下调,调用到dao层,根据用户ID,模块英文缩写,还有相应的操作(CRUD)来判断

a)         通过模块缩写,查找到模块的ID

b)         以用户类型查找权限记录,如果有对这个模块的记录的话,直接返回,如果没有的话,到下一步。

c)         找到用户所对应的角色,通过角色找到角色所拥有的权限,取出对应模块操作的字段,返回是否具有相应的操作。

 

这里有个小技巧,看是否有对应模块的操作,是用一个0~15的数字存在数据库中,取出来之后将他化为4位二进制数,代表了四个操作(CRUD),想要哪一位就跟那一位进行&操作,看得到的数是否为0,有点像linux中查看用户权限的操作,比如ls –l 列出的用户所具有的权限,就是读取系统中的一个文件的文件信息,是一个二进制文件,通过&操作将对应的位取出来,判断是否具有权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值