权限管理中操作级权限在session中怎么放置

做了一个在线客户管理系统,分一级模块和二级模块还有三级模块,通过父ID自关联的,其中三级模块重要是些增删查改的操作,这些功能操作加起来大约有100多项吧。我把一级模块和二级模块都在用户登录的时候放在了session中,有20来项,用拦截器实现的,查询效率不错,但是到了三级模块按钮级模块该怎么处理啊,难道也把他们在登录的时候放到session里面,如果放的话怎么放,才能使灵活性高而且查询速度也高呢?

可以用一个字符串代表该用户所有权限。

这里假设有三个级联模块A->B->C.
有A权限才能操作B,依次类推。

假设A有4个功能,分别为CUD.用户在其中一位有权限, 该位置记1,否则为0.
i.e. 110就代表用户有C(创建), U(修改), 没有D(删除)权限。

模块间用"."分割。

比如110.0000.000000就代表用户无B,C权限。
110.0010.000001,就代表用户有A,B,C的部分权限。

共100多个操作,就用100个0或1来代表权限位。

如果是为了性能的话,那直接放在session也无妨,但也要考虑到session中放太多数据会导致服务器内存使用完,抛OOM的异常

所以说,这样数据太大,不适合放在session中了,可以把map或list序列化到文件中,要取的时候再反序列化回来,这样就不用查询数据库,只是读取文件了,可能性能会好些吧,