t3用户-角色-权限hibernate经典配置
- 用户-角色-权限hibernate经典配置。
- 既然有人问起,我就写下说明吧。在文章中间的配置文件那里。权当回忆一下,也帮助更多人。这是以前学校时写的,没有注释。都是贴的代码笔记。看到的莫要见怪。欢迎学习交流。
- 首先是三个实体类:
- 用户-》角色-》权限
- package com.tudou.hibernates.RoleManage;
- import java.util.HashSet;
- import java.util.Set;
- public class User {
- private int uid;
- private String userName;
- private String nickName;
- private String password;
- private String mark;
- private Set<RoleUser> roleUsers = new HashSet<RoleUser>();
- public User() {
- super();
- }
- public User(String userName, String nickName, String password, String mark,
- Set<RoleUser> roleUsers) {
- super();
- this.userName = userName;
- this.nickName = nickName;
- this.password = password;
- this.mark = mark;
- this.roleUsers = roleUsers;
- }
- public int getUid() {
- return uid;
- }
- public void setUid(int uid) {
- this.uid = uid;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getNickName() {
- return nickName;
- }
- public void setNickName(String nickName) {
- this.nickName = nickName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getMark() {
- return mark;
- }
- public void setMark(String mark) {
- this.mark = mark;
- }
- public Set<RoleUser> getRoleUsers() {
- return roleUsers;
- }
- public void setRoleUsers(Set<RoleUser> roleUsers) {
- this.roleUsers = roleUsers;
- }
- }
- package com.tudou.hibernates.RoleManage;
- import java.util.HashSet;
- import java.util.Set;
- public class Role {
- private int rid;
- private String roleName;
- private String dsc;
- private Set<RoleUser> roleUsers = new HashSet<RoleUser>();
- private Set<FunctionsRole> functionRoles = new HashSet<FunctionsRole>();
- public Role() {
- super();
- }
- public Role(String roleName, String dsc, Set<RoleUser> roleUsers,
- Set<FunctionsRole> functionRoles) {
- super();
- this.roleName = roleName;
- this.dsc = dsc;
- this.roleUsers = roleUsers;
- this.functionRoles = functionRoles;
- }
- public int getRid() {
- return rid;
- }
- public void setRid(int rid) {
- this.rid = rid;
- }
- public String getRoleName() {
- return roleName;
- }
- public void setRoleName(String roleName) {
- this.roleName = roleName;
- }
- public String getDsc() {
- return dsc;
- }
- public void setDsc(String dsc) {
- this.dsc = dsc;
- }
- public Set<RoleUser> getRoleUsers() {
- return roleUsers;
- }
- public void setRoleUsers(Set<RoleUser> roleUsers) {
- this.roleUsers = roleUsers;
- }
- public Set<FunctionsRole> getFunctionRoles() {
- return functionRoles;
- }
- public void setFunctionRoles(Set<FunctionsRole> functionRoles) {
- this.functionRoles = functionRoles;
- }
- }
- package com.tudou.hibernates.RoleManage;
- import java.util.HashSet;
- import java.util.Set;
- public class Functions {
- private int fid;
- private String functionName;
- private String mark;
- private Set<FunctionsRole> functionRoles = new HashSet<FunctionsRole>();
- public Functions(String functionName, String mark,
- Set<FunctionsRole> functionRoles) {
- super();
- this.functionName = functionName;
- this.mark = mark;
- this.functionRoles = functionRoles;
- }
- public Functions() {
- super();
- }
- public int getFid() {
- return fid;
- }
- public void setFid(int fid) {
- this.fid = fid;
- }
- public String getFunctionName() {
- return functionName;
- }
- public void setFunctionName(String functionName) {
- this.functionName = functionName;
- }
- public String getMark() {
- return mark;
- }
- public void setMark(String mark) {
- this.mark = mark;
- }
- public Set<FunctionsRole> getFunctionRoles() {
- return functionRoles;
- }
- public void setFunctionRoles(Set<FunctionsRole> functionRoles) {
- this.functionRoles = functionRoles;
- }
- }
用户-角色-权限关系如下:
一个用户user对应多个角色role,一个角色对应多个用户,关系为多对多many-to-many
一个角色role对应多个权限functions,一个权限也对应多个角色。
这个自不必说。
主要是如何维护呢。
如下所示:
多对多必然产生中间表进行关联。
user与role产生中间表userRole。则user与userRole的关系为one-to-many。理解为一个用户可以有多个权限对应。role与userRole的关系为one-to-many。理解为一个权限可以有多个用户对应。
其次就是角色role与权限function,中间表为roleFunction,他们之前的关系如上。
只不过role表在中间,即与user表是多对多的关系,又与function表是多对多的关系。所以role会产生2张中间表,一张userRole,一张roleFunction而已。
role与这2张中间表都是one-to-many的关系,反之,它们与role却都是many-to-one的关系。
user->userRole->role->roleFunction->function
user->userRole一对多,role->userRole一对多,则user->role多对多
role->roleFunction一对多,function->roleFunction一对多,则role->function多对多
说白了就是把2个多对多,分解成了4个一对多【其实就是2对一对多】而已。
这样写来。再看配置,则是一目了然了。
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.tudou.hibernates.RoleManage">
- <class name="User" table="tb_user">
- <id name="uid" column="uid">
- <generator class="native" />
- </id>
- <property name="userName"></property>
- <property name="nickName"></property>
- <property name="password"></property>
- <property name="mark"></property>
- <set name="roleUsers" cascade="save-update" inverse="true">
- <key>
- <column name="uid"></column>
- </key>
- <one-to-many class="RoleUser" />
- </set>
- </class>
- </hibernate-mapping>
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.tudou.hibernates.RoleManage">
- <class name="Role" table="tb_role">
- <id name="rid" column="rid">
- <generator class="native">
- </generator>
- </id>
- <property name="roleName" />
- <property name="dsc" />
- <set name="roleUsers" cascade="save-update" inverse="true">
- <key>
- <column name="rid"></column>
- </key>
- <one-to-many class="RoleUser" />
- </set>
- <set name="functionRoles" cascade="save-update" inverse="true">
- <key>
- <column name="rid"></column>
- </key>
- <one-to-many class="FunctionsRole" />
- </set>
- </class>
- </hibernate-mapping>
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.tudou.hibernates.RoleManage">
- <class name="RoleUser" table="role_user">
- <id name="ru_id" column="ru_id">
- <generator class="native" />
- </id>
- <many-to-one name="role" class="Role" cascade="save-update"
- fetch="select">
- <column name="rid"></column>
- </many-to-one>
- <many-to-one name="user" class="User" cascade="save-update"
- fetch="select">
- <column name="uid"></column>
- </many-to-one>
- </class>
- </hibernate-mapping>
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.tudou.hibernates.RoleManage">
- <class name="FunctionsRole" table="functions_role">
- <id name="fr_id" column="fr_id">
- <generator class="native" />
- </id>
- <many-to-one name="functions" class="Functions" cascade="save-update"
- fetch="select">
- <column name="fid"></column>
- </many-to-one>
- <many-to-one name="role" class="Role" cascade="save-update"
- fetch="select">
- <column name="rid"></column>
- </many-to-one>
- </class>
- </hibernate-mapping>
- package com.tudou.hibernates.RoleManage;
- public class RoleUser {
- private int ru_id;
- private Role role;
- private User user;
- public RoleUser(Role role, User user) {
- super();
- this.role = role;
- this.user = user;
- }
- public RoleUser() {
- super();
- }
- public int getRu_id() {
- return ru_id;
- }
- public void setRu_id(int ruId) {
- ru_id = ruId;
- }
- public Role getRole() {
- return role;
- }
- public void setRole(Role role) {
- this.role = role;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- }
- package com.tudou.hibernates.RoleManage;
- public class FunctionsRole {
- private int fr_id;
- private Functions functions;
- private Role role;
- public FunctionsRole() {
- super();
- }
- public FunctionsRole(Functions functions, Role role) {
- super();
- this.functions = functions;
- this.role = role;
- }
- public int getFr_id() {
- return fr_id;
- }
- public void setFr_id(int frId) {
- fr_id = frId;
- }
- public Functions getFunctions() {
- return functions;
- }
- public void setFunctions(Functions functions) {
- this.functions = functions;
- }
- public Role getRole() {
- return role;
- }
- public void setRole(Role role) {
- this.role = role;
- }
- }
t3用户-角色-权限hibernate经典配置的更多相关文章
- 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面
这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...
- [.Net MVC] 用户角色权限管理_使用CLK.AspNet.Identity
项目:后台管理平台 意义:一个完整的管理平台需要提供用户注册.登录等功能,以及认证和授权功能. 一.为何使用CLK.AspNet.Identity 首先简要说明所采取的权限控制方式.这里采用了基于角色 ...
- 扩展RBAC用户角色权限设计方案(转载)
扩展RBAC用户角色权限设计方案 来源:https://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html https://blog.csd ...
- spring-boot-plus V1.4.0发布 集成用户角色权限部门管理
RBAC用户角色权限 用户角色权限部门管理核心接口介绍 Shiro权限配置
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...
- [转]扩展RBAC用户角色权限设计方案
原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地 ...
- 扩展RBAC用户角色权限设计方案
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
- RBAC用户角色权限设计方案
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用 户-角色 ...
随机推荐
- 记录一次错误处理 (xml序列化和反序列化相关)
XML序列化后,反序列化时出现错误 报错现象 System.InvalidOperationException: XML 文档(40, 11)中有错误. ---> System.Xml.XmlE ...
- oracle 字符串分割函数
首先创建一个类型: CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000); 创建函数: CREATE OR REPLACE FUNC ...
- ASP.NET MVC WebAPI实现文件批量上传
工作中学习,学习中记录~~~~~~ 最下面附上demo 任务需求:需要做一个apI接口让C#的程序调用实现批量文件的上传. 难度: 没有做过通过API上传文件的...之前做过网站前后台上传. 首先当然 ...
- C# 中 DataTable转换成IList
在用C#作开发的时候经常要把DataTable转换成IList:操作DataTable比较麻烦,把DataTable转换成IList,以对象实体作为IList的元素,操作起来就非常方便. 注意:实体的 ...
- 浏览器特权域XSS漏洞
导语:科普什么是浏览器特权域XSS,可以用来干什么? 作者:天析 团队:Arctic Shell 为什么科普这个? 今天在群里看到有表姐说这个,然后恰好又有学姐在问什么是特权域XSS,于是就来说说这个 ...
- web端权限维持【好文】
前言 关于权限维持,我之前写过一篇基于系统端的后门技术文章,如映像劫持啊,lpk之类. 内容目录: - 构造文件包含漏洞- 隐蔽性脚本木马- 构造sql注入点 正文 0x01 构造文件包含漏洞 > ...
- iOS-iOS9系统SEGV_ACCERR问题处理【v3.6.3的一些bug修复】
前言 最近APP不断地更新版本,却发现一些未知的错误导致崩溃,我把能测出来的错误,全部修复了,因为项目里集成了腾讯Bugly,看了下后台的崩溃,依旧千篇一律啊,然后就纠结了,很多SEGV_ACCERR ...
- ProxySQL 部署 Single Writer Failover 读写分离 (PXC)
主机信息: Proxysql: 如果你忽略了ProxySQL会报告主机组的变化,我建议把它设置为0,除非你试图调试"某些东西",否则你的日志将很快变得巨大.UPDATE globa ...
- MATLAB下数组随机打乱顺序的方法
一:问题 有两个规模相同的数组,两个数组相同位置的元素一一对应,现在要将两数组的元素同时打乱顺序,并且乱序后的两数组对应位置元素要保持乱序前的对应关系. 二:方法 采用randperm()函数,产生 ...
- VisualVM + BTrace
VisualVM下载地址:http://visualvm.github.io/download.html 解压后打开bin目录下的visualvm.exe 选择Tool-->Plugins,选择 ...