diff --git a/SpringBootShiroAuthorization/SpringBootShiroAuthorization.iml b/SpringBootShiroAuthorization/SpringBootShiroAuthorization.iml new file mode 100644 index 0000000..e48050d --- /dev/null +++ b/SpringBootShiroAuthorization/SpringBootShiroAuthorization.iml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SpringBootShiroAuthorization/pom.xml b/SpringBootShiroAuthorization/pom.xml new file mode 100644 index 0000000..de5289c --- /dev/null +++ b/SpringBootShiroAuthorization/pom.xml @@ -0,0 +1,78 @@ + + + + SpringBoot2 + zz + 0.0.1-SNAPSHOT + + 4.0.0 + + SpringBootShiroAuthorization + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-devtools + true + + + + + mysql + mysql-connector-java + 8.0.15 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + org.springframework.boot + spring-boot-starter-test + + + + + + org.apache.shiro + shiro-spring + 1.4.0 + + + + + org.projectlombok + lombok + 1.18.6 + provided + + + + + + + alimaven + aliyun maven + http://maven.aliyun.com/nexus/content/groups/public/ + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/SpringBootShiroAuthorization/src/main/java/com/zz/entity/Permission.java b/SpringBootShiroAuthorization/src/main/java/com/zz/entity/Permission.java new file mode 100644 index 0000000..138a30a --- /dev/null +++ b/SpringBootShiroAuthorization/src/main/java/com/zz/entity/Permission.java @@ -0,0 +1,68 @@ +package com.zz.entity; + +import lombok.Data; +import org.hibernate.annotations.Proxy; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: java类作用描述 + * @Author: Bsea + * @CreateDate: 2019/8/31$ 15:54$ + */ +@Entity +@Table(name="T_PERMISSION") +@Proxy(lazy = false) +public class Permission { + + @Id + @Column(length = 50) + private String id; + //url地址 + private String url; + //url描述 + private String name; + + // @ManyToMany注释表示Teacher是多对多关系的一端。 + // @JoinTable描述了多对多关系的数据表关系。name属性指定中间表名称,joinColumns定义中间表与Teacher表的外键关系。 + // 中间表Teacher_Student的Teacher_ID列是Teacher表的主键列对应的外键列,inverseJoinColumns属性定义了中间表与另外一端(Student)的外键关系。 + @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) + @JoinTable(name = "T_ROLE_PERMISSION", joinColumns = { @JoinColumn(name = "p_id") }, inverseJoinColumns = { + @JoinColumn(name = "r_id") }) + private List roles=new ArrayList<>(); + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } +} diff --git a/SpringBootShiroAuthorization/src/main/java/com/zz/entity/Role.java b/SpringBootShiroAuthorization/src/main/java/com/zz/entity/Role.java new file mode 100644 index 0000000..d092d64 --- /dev/null +++ b/SpringBootShiroAuthorization/src/main/java/com/zz/entity/Role.java @@ -0,0 +1,87 @@ +package com.zz.entity; + +import lombok.Data; +import org.hibernate.annotations.Proxy; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @Description: java类作用描述 + * @Author: Bsea + * @CreateDate: 2019/8/31$ 15:54$ + */ +@Entity +@Table(name="T_ROLE") + +@Proxy(lazy = false) +public class Role { + + @Id + @Column(length = 50) + private String id; + //角色描述 + private String detail; + //角色名称 + private String name; + + // @ManyToMany注释表示Teacher是多对多关系的一端。 + // @JoinTable描述了多对多关系的数据表关系。name属性指定中间表名称,joinColumns定义中间表与Teacher表的外键关系。 + // 中间表Teacher_Student的Teacher_ID列是Teacher表的主键列对应的外键列,inverseJoinColumns属性定义了中间表与另外一端(Student)的外键关系。 + @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) + @JoinTable(name = "T_ROLE_PERMISSION", joinColumns = { @JoinColumn(name = "r_id") }, inverseJoinColumns = { + @JoinColumn(name = "p_id") }) + private Set permissions = new HashSet(); + + + + @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) + @JoinTable(name = "T_USER_ROLE", joinColumns = { @JoinColumn(name = "r_id") }, + inverseJoinColumns = { + @JoinColumn(name = "u_id") }) + private List users=new ArrayList(); + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Set getPermissions() { + return permissions; + } + + public void setPermissions(Set permissions) { + this.permissions = permissions; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } +} diff --git a/SpringBootShiroAuthorization/src/main/resources/application.properties b/SpringBootShiroAuthorization/src/main/resources/application.properties new file mode 100644 index 0000000..d86ac72 --- /dev/null +++ b/SpringBootShiroAuthorization/src/main/resources/application.properties @@ -0,0 +1,12 @@ +server.port=9087 +server.servlet.context-path=/r + +# 数据库的信息 +spring.datasource.url = jdbc:mysql://localhost:3306/java10?useSSL=false&serverTimezone=Asia/Shanghai +spring.datasource.username = root +spring.datasource.password = Java20190713*yy +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver +spring.jpa.database = MYSQL +# spring.jpa.show-sql = true 表示会在控制台打印执行的sql语句 +spring.jpa.show-sql = true +spring.jpa.hibernate.ddl-auto = update diff --git a/SpringBootShiroAuthorization/src/main/resources/init.sql b/SpringBootShiroAuthorization/src/main/resources/init.sql new file mode 100644 index 0000000..16ebaea --- /dev/null +++ b/SpringBootShiroAuthorization/src/main/resources/init.sql @@ -0,0 +1,80 @@ +-- ---------------------------- +-- Table structure for T_PERMISSION +-- ---------------------------- +CREATE TABLE T_PERMISSION ( + ID NUMBER(10) NOT NULL , + URL VARCHAR2(256 BYTE) NULL , + NAME VARCHAR2(64 BYTE) NULL +); +COMMENT ON COLUMN T_PERMISSION.URL IS 'url地址'; +COMMENT ON COLUMN T_PERMISSION.NAME IS 'url描述'; +-- ---------------------------- +-- Records of T_PERMISSION +-- ---------------------------- +INSERT INTO T_PERMISSION VALUES ('1', '/user', 'user:user'); +INSERT INTO T_PERMISSION VALUES ('2', '/user/add', 'user:add'); +INSERT INTO T_PERMISSION VALUES ('3', '/user/delete', 'user:delete'); +-- ---------------------------- +-- Table structure for T_ROLE +-- ---------------------------- +CREATE TABLE T_ROLE ( + ID NUMBER NOT NULL , + NAME VARCHAR2(32 BYTE) NULL , + MEMO VARCHAR2(32 BYTE) NULL +); +COMMENT ON COLUMN T_ROLE.NAME IS '角色名称'; +COMMENT ON COLUMN T_ROLE.MEMO IS '角色描述'; +-- ---------------------------- +-- Records of T_ROLE +-- ---------------------------- +INSERT INTO T_ROLE VALUES ('1', 'admin', '超级管理员'); +INSERT INTO T_ROLE VALUES ('2', 'test', '测试账户'); +-- ---------------------------- +-- Table structure for T_ROLE_PERMISSION +-- ---------------------------- +CREATE TABLE T_ROLE_PERMISSION ( + RID NUMBER(10) NULL , + PID NUMBER(10) NULL +); +COMMENT ON COLUMN T_ROLE_PERMISSION.RID IS '角色id'; +COMMENT ON COLUMN T_ROLE_PERMISSION.PID IS '权限id'; +-- ---------------------------- +-- Records of T_ROLE_PERMISSION +-- ---------------------------- +INSERT INTO T_ROLE_PERMISSION VALUES ('1', '2'); +INSERT INTO T_ROLE_PERMISSION VALUES ('1', '3'); +INSERT INTO T_ROLE_PERMISSION VALUES ('2', '1'); +INSERT INTO T_ROLE_PERMISSION VALUES ('1', '1'); +-- ---------------------------- +-- Table structure for T_USER +-- ---------------------------- +CREATE TABLE T_USER ( + ID NUMBER NOT NULL , + USERNAME VARCHAR2(20 BYTE) NOT NULL , + PASSWD VARCHAR2(128 BYTE) NOT NULL , + CREATE_TIME DATE NULL , + STATUS CHAR(1 BYTE) NOT NULL +); +COMMENT ON COLUMN T_USER.USERNAME IS '用户名'; +COMMENT ON COLUMN T_USER.PASSWD IS '密码'; +COMMENT ON COLUMN T_USER.CREATE_TIME IS '创建时间'; +COMMENT ON COLUMN T_USER.STATUS IS '是否有效 1:有效 0:锁定'; +-- ---------------------------- +-- Records of T_USER +-- ---------------------------- +INSERT INTO T_USER VALUES ('2', 'tester', '243e29429b340192700677d48c09d992', TO_DATE('2017-12-11 17:20:21', 'YYYY-MM-DD HH24:MI:SS'), '1'); +INSERT INTO T_USER VALUES ('1', 'mrbird', '42ee25d1e43e9f57119a00d0a39e5250', TO_DATE('2017-12-11 10:52:48', 'YYYY-MM-DD HH24:MI:SS'), '1'); +-- ---------------------------- +-- Table structure for T_USER_ROLE +-- ---------------------------- +CREATE TABLE T_USER_ROLE ( + USER_ID NUMBER(10) NULL , + RID NUMBER(10) NULL +); +COMMENT ON COLUMN T_USER_ROLE.USER_ID IS '用户id'; +COMMENT ON COLUMN T_USER_ROLE.RID IS '角色id'; +-- ---------------------------- +-- Records of T_USER_ROLE +-- ---------------------------- +INSERT INTO T_USER_ROLE VALUES ('1', '1'); +INSERT INTO T_USER_ROLE VALUES ('2', '2'); \ No newline at end of file diff --git a/SpringBootShiroAuthorization/src/main/resources/logback-spring.xml b/SpringBootShiroAuthorization/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..e8d95a9 --- /dev/null +++ b/SpringBootShiroAuthorization/src/main/resources/logback-spring.xml @@ -0,0 +1,57 @@ + + + + logback + + + + + + + + + + + + + INFO + + + + ${LOG_PATTERN} + + + + + + + + + ${FILE_PATH} + + + 30 + + + + 2MB + + + + 1GB + + + + ${LOG_PATTERN} + + + + + + + + + + + + \ No newline at end of file