本人 php技术小白,今天做rbac 以前接触的不是太多 于是便吧自己 今天做的整理一下
首先呢 创建五张表
2.1、用户表
CREATE TABLE t_user(
user_id NUMBER(10) PRIMARY KEY,
user_name VARCHAR2(30),
gender NUMBER(1),
birthday DATE,
create_time DATE DEFAULT SYSDATE
);
COMMENT ON TABLE t_user IS '用户表';
COMMENT ON COLUMN t_user.user_id IS '用户ID';
COMMENT ON COLUMN t_user.user_name IS '用户姓名';
COMMENT ON COLUMN t_user.gender IS '性别{1男/0女}';
COMMENT ON COLUMN t_user.birthday IS '出生日期';
COMMENT ON COLUMN t_user.create_time '创建时间';
2.2、角色表
CREATE TABLE t_role(
role_id NUMBER(10) PRIMARY KEY,
role_name VARCHAR2(30),
create_time DATE DEFAULT SYSDATE
);
COMMENT ON TABLE t_role IS '角色表';
COMMENT ON COLUMN t_role.role_id IS '角色ID';
COMMENT ON COLUMN t_role.role_name IS '角色名称';
COMMENT ON COLUMN t_role.create_time '创建时间';
2.3、权限表
CREATE TABLE t_power(
power_id NUMBER(10) PRIMARY KEY,
power_url varchar(30),
power_name VARCHAR2(30),
create_time DATE DEFAULT SYSDATE
);
COMMENT ON TABLE t_power IS '权限表';
COMMENT ON COLUMN t_power.power_id IS '权限ID';
COMMENT ON COLUMN t_power.power_name IS '权限名称';
COMMENT ON COLUMN t_power.power_url IS '权限名称相对应的路径';
COMMENT ON COLUMN t_power.create_time '创建时间';
2.4、用户角色(关系)表
CREATE TABLE t_user_role(
user_id NUMBER(10) NOT NULL,
role_id NUMBER(10) NOT NULL ,
create_time DATE DEFAULT SYSDATE
);
COMMENT ON TABLE t_user_role IS '用户角色(关系)表';
COMMENT ON COLUMN t_user_role.user_id IS '用户ID';
COMMENT ON COLUMN t_user_role.role_id IS '角色ID';
COMMENT ON COLUMN t_user_role.create_time '创建时间';
2.5、角色权限(关系)表
CREATE TABLE t_role_power(
role_id NUMBER(10) NOT NULL,
power_id NUMBER(10) NOT NULL
);
COMMENT ON TABLE t_role_power IS '角色权限(关系)表';
COMMENT ON COLUMN t_role_power.role_id IS '角色ID';
COMMENT ON COLUMN t_role_power.power_id IS '权限ID';
COMMENT ON COLUMN t_role_power.create_time '创建时间';
创建完以上几张表之后
进行登录的操作
登录存cookie或session根据name或id查询此用户的权限 然后根据对应权限展示对应信息
查询sql
select * from power //权限表表名
where power_id //权限表id
in(select power_id from role_power where role_id in (select role_id from user_role where user_id = 1))
还不完善,,后续改进