jive2.5论坛Cache处理之更新---增加用户权限

    最近有些网友看了jive论坛中的增加用户权限的cache的一些处理过程觉得很迷惑,现将其做一个总结。

    jive论坛的权限是分几个级别的:匿名用户,注册用户,具体的用户。匿名用户和注册用户都代表一类的人,而具体的用户则代表注册用户本身,其权限范围上是注册用户的权限包含匿名用户的权限,具体用户的权限包含注册用户的权限。

    在jive的权限缓存中,论坛ID等于-1时代表所有论坛的公共权限即全局权限,用户ID等于-1时代表是匿名用户,0时统指注册用户,具体的用户则用其userID表示。

    jive增加用户权限时会判断增加的是全局的权限还是某一个论坛的权限,当要添加新用户的权限时,如果该用户为匿名用户或者是注册用户就要删除掉缓存里的所有用户的权限信息,很多人对这点存有疑问,
首先当增加用户的权限时,要在缓存中把对应有改动的用户权限删除,这样在下次用户验证权限时,系统就会从数据库中获取最新的权限信息并放到缓存中,匿名的用户和注册的用户的权限改变了,那所有具体用户的权限也必定跟着改变,因为具体用户的权限是包括匿名用户和注册用户的权限的.

    如果增加的是用户组的权限就会把相应论坛的权限的Cache全部的删除,

    下面这段是权限管理DbPermissionManager添加用户权限的方法addUserPermission(long userID, int permissionType)中的一段代码:  
      
          if (forumID == -1) {
                if (userID == -1 || userID == 0) {
                    factory.cacheManager.userPermsCache.clear();
                }
                else {
                    factory.cacheManager.userPermsCache.removeUserPerm(userID);
                }
            }
            //Otherwise, it's just per forum.
            else {
                if (userID == -1 || userID == 0) {
                    LongCache permsCache = factory.cacheManager.userPermsCache.get(forumID);
                    //If cache is turned on, the cache shouldn't be null.
                    if (permsCache != null) {
                        permsCache.clear();
                    }
                }
                else {
                    factory.cacheManager.userPermsCache.removeUserPerm(userID, forumID);
                }
            }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值