您的位置:首页 > 其它

调查管理系统(6)---权限设计

2016-09-28 22:53 260 查看
N                      N                     N

User      -------->       Role     -------------->   Right               权限码

                                                           

Tom                   科长                 1  SurveyAction_newSurvey  0001

                                               2  SurveyAction_editSurvey   0010

Tomas                 处长                 3  SurveyAction_delSurvey   0100

                                                4  SurveyAction_mySurvey  1000

TomsLee

 

                                                                   1《《N

 

String rightIds= “1,2,3,4……..”;

 

String roleIds =“1,2,3”;

Int rightSum =15

 

二进制按位运算         速度快

1111

&

0001

0001

 

 

Int  4*8       32

权限太少

分组

 

 

 

Right                   rightPos

SurveyAction_newSurvey       0                1

SurveyAction_editSurvey       0                2

SurveyAction_delSurvey        0                3

SurveyAction_mySurvey        0                4

                                             1<<60

 

1    1

1                 2

1                 3

1                 4

总和     是二进制的或运算

 

Long[]  存储权限

 

判断有无权限看他的与运算,为0则为无权限

                          1    有权限

新添加的两张表

user_role_link            userid      roleid

role_right_link             roleid      rightid

<hibernate-mapping package="cn.itcast.surveypark.domain">
<class name="User" table="users">
<id name="id" column="id" type="integer">
<generator class="identity" />
</id>
<property name="email" column="email" type="string" length="50" />
<property name="password" column="password" type="string" length="50" />
<property name="nickName" column="nickname" type="string" length="50" />
<property name="regDate" column="regdate" type="timestamp" update="false"/>

<!-- 角色集合 -->
<set name="roles" table="user_role_link" lazy="false">
<key column="userid" />
<many-to-many class="cn.itcast.surveypark.domain.security.Role" column="roleid" />
</set>
</class>

</hibernate-mapping>    

不在一个包下得写完整类名

identity:由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,前提条件是低层数据库支持自动增长字段类型

 lazy懒加载

<hibernate-mapping package="cn.itcast.surveypark.domain.security">
<class name="Role" table="roles">
<id name="id" column="id" type="integer">
<generator class="identity" />
</id>
<property name="roleName" column="rolename" type="string" length="50" />
<property name="roleDesc" column="roledesc" type="string" length="200" />
<property name="roleValue" column="rolevalue" type="string" length="20" />

<!-- 映射role到Right之间多对多关联关系 -->
<set name="rights" table="role_right_link" lazy="false">
<key column="roleid" />
<many-to-many class="Right" column="rightid" />
</set>
</class>

</hibernate-mapping>

<hibernate-mapping package="cn.itcast.surveypark.domain.security">
<class name="Right" table="rights">
<id name="id" column="id" type="integer">
<generator class="identity" />
</id>
<property name="rightUrl" column="righturl" type="string" length="50" />
<property name="rightName" column="rightname" type="string" length="200" />
<property name="rightDesc" column="rightdesc" type="string" length="200" />
<property name="rightPos" column="rightpos" type="integer" update="false"/>
<property name="rightCode" column="rightcode" type="long" update="false" />
<property name="common" column="common" type="boolean" />
</class>

</hibernate-mapping>

权限位和权限码均不允许更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: