zoukankan      html  css  js  c++  java
  • 【liferay】4、liferay的权限体系

    liferay中有几个概念

    1、user_ 表存放liferay的用户

    2、usergroup 用户组

    3、角色

    4、组织,组织可以是站点的成员

    5、站点

    6、团队

    liferay中所有的东西都被视为是资源

    而权限和资源挂钩

    在Liferay里面存储权限的表主要涉及两个表,一个叫resourcepermission(资源权限表)。此表定义了Liferay里面权限结构,里面的表结构主要字段含义如下:

    • Name:资源对象的描述,如果资源描述的是一个portlet对象,则为这个portlet对象的portletId.如果是一个class, 则为带包名的class全名称
    • Scope:权限的作用域,值有1、2、3、4,1表示company级就是实例、2表示group级就是站点级,3是站点模板,4是没级,就表示当前的。
    • Primkey:资源的ID
    • Roleid:角色id
    • Ownerid:资源的属于哪一个人,一般值为0或创建的用户id
    • Actionids:这里的actionids为resourceaction表里面的bitwisevalue的值的相加之和。

    另外一张表为:resourceaction(资源动作表),此表定义了Liferay中的相应的资源上可执行的动作有哪些。主要的表结构字段如下:

    • Name: 定义了资源的类型,同上面的表一样,确定资源是portlet还是实体或者是其他,表示是什么资源。
    • actionId:可执行的动作名称,这里主要是为我们的动作启一个名称,如添加、修改、配置等。
    • bitwisevalue:这个定义的为上面可执行动作的位值,也可以看作是权限的动作ID。

    所以我们如果要判断bitwisevalue的值是否在actionids里面,只需要两个做位运算,actionids|bitwisevalue是否等于bitwisevalue即可。

    那么判断这个用户是否有对应的权限(actionId)

    1、获取当前访问页面的pageid

    2、获取当前用户的角色

    3、根据pageid-》primkey + roleId 查询当前记录中的actionsids字段

    4、resourcepermission表中的name和actionId(这个就是权限),对应的bitwiseValue获取

    5、actionids|bitwisevalue是否等于bitwisevalue 如果等于,标识有这个权限,或运算

     

     判断是否有对应权限

     

     这个角色只有添加到页面的权限

  • 相关阅读:
    Atcoder 1975 Iroha and Haiku
    训练指南 string easy
    心态回归
    Mysql问题处理
    Mysql-从库只读设置
    Redis5-集群搭建实验
    安装python3并新建python3的虚拟环境
    docker-部署zabbix4
    pt工具-mysql慢日志分析&优化
    Ansible:playbook-nagios
  • 原文地址:https://www.cnblogs.com/cutter-point/p/8299297.html
Copyright © 2011-2022 走看看