权限控制:
    确保只有获得相应授权的人,才能执行相应的功能,操作相应的数据。
    权限系统:

    安全实体 :被权限系统检测的对象,比如工资数据。
    权限:需要被校验的权限对象,比如查看,修改等。
    ps:安全实体要和权限一起描述才有意义。
    例:现在要检测登陆人员对工资数据是否有查看的权限。

    授权:把对 某些安全实体 某些权限 分配某些人员 的过程。
    验证判断 某个人员某个安全实体 是否拥有 某个或某些权限 的过程。
    ps:授权——权限的分配过程,验证——权限的匹配过程

    权限的继承性:如果多个安全实体存在包含关系,而某个安全实体没有相应的权限限制,那么它会继承包含它的安全实体的相应权限。数据包含工资数据,如果工资数据没有权限限制,那么它自动继承数据的权限。
    权限的最近匹配原则:如果安全实体存在包含关系,而某个安全实体没有相应的权限限制,直接找到离这个安全实体最近的拥有相应权限限制的安全实体为止。

    系统思路:
    首先不能每次用户的操作都要到表中去查该用户时候可以进行此操作。加剧数据库服务器的负担,系统变慢。
    为了优化系统的运行速度,开发小组决定使用缓存,当每个人员登陆时,就把该人员能够操作的权限获取到,存储在内存中,这样每次操作的时候,直接在内存中进行权限的校验,速度会大大加快。

    一般的方法会导致 每一个用户每一个安全实体每一个权限都要用一个对象来表示,并且还要放到内存中,便于根据用户名查找。这样导致了,存在大量细粒度对象,并且存在大量的重复数据(因为安全实体和权限的名字就那么几个)。

    解决方法:享元模式

    定义:运用共享技术有效地支持大量细粒度对象。

    以前运用星型模型的时候,也有类似的,每个条记录都要存储一个维度表的id,可是这并不能用享元,首先它是存储在物理内存中的,其次它是一个表,就应该这么存,冗余一点没太大关系。