diff --git a/pom.xml b/pom.xml index 06c4cbb..228c7a8 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ org.apache.tomcat tomcat-jasper + 9.0.10 @@ -83,7 +84,11 @@ javax.servlet jstl - + + org.projectlombok + lombok + true + diff --git a/sql.sql b/sql.sql new file mode 100644 index 0000000..11243da --- /dev/null +++ b/sql.sql @@ -0,0 +1,71 @@ +DROP DATABASE db_shiroTest; +GRANT ALL ON db_shiroTest.* TO trs@localhost IDENTIFIED BY 'shiro'; +flush privileges; +CREATE DATABASE IF NOT EXISTS db_shiroTest DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; +USE db_shiroTest; +-- 权限表 -- +CREATE TABLE permission ( + pid INT(11) NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL DEFAULT '', + url VARCHAR(255) DEFAULT '', + PRIMARY KEY (pid) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; + +-- 用户表 -- +CREATE TABLE user ( + uid INT(11) NOT NULL AUTO_INCREMENT, + username VARCHAR(255) NOT NULL DEFAULT '', + password VARCHAR(255) NOT NULL DEFAULT '', + PRIMARY KEY (uid) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; + +-- 角色表 -- +CREATE TABLE role ( + rid INT(11) NOT NULL AUTO_INCREMENT, + rname VARCHAR(255) NOT NULL DEFAULT '', + PRIMARY KEY (rid) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; + +-- 权限角色关系表 -- +CREATE TABLE permission_role ( + rid INT(11) NOT NULL, + pid INT(11) NOT NULL, + CONSTRAINT FK_prid FOREIGN KEY (rid) REFERENCES role (rid), + CONSTRAINT FK_pid FOREIGN KEY (pid) REFERENCES permission (pid) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; + +-- 用户角色关系表 -- +CREATE TABLE user_role ( + rid INT(11) NOT NULL, + uid INT(11) NOT NULL, + CONSTRAINT FK_urid FOREIGN KEY (rid) REFERENCES role (rid), + CONSTRAINT FK_uid FOREIGN KEY (uid) REFERENCES user (uid) +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; + +-- 初始化数据 -- +INSERT INTO permission (pid,name, url) VALUE ('1','add',''); +INSERT INTO permission (pid,name, url) VALUE ('2','delete',''); +INSERT INTO permission (pid,name, url) VALUE ('3','edit',''); +INSERT INTO permission (pid,name, url) VALUE ('4','query',''); + +INSERT INTO user (uid,username, password) VALUE ('1','admin','0000'); +INSERT INTO user (uid,username, password) VALUE ('2','trs','trs'); + +INSERT INTO role (rid,rname) VALUE ('1','admin'); +INSERT INTO role (rid,rname) VALUE ('2','customer'); +INSERT INTO role (rid,rname) VALUE ('3','guest'); + +INSERT INTO permission_role (rid, pid) VALUE ('1','1'); +INSERT INTO permission_role (rid, pid) VALUE ('1','2'); +INSERT INTO permission_role (rid, pid) VALUE ('1','3'); +INSERT INTO permission_role (rid, pid) VALUE ('1','4'); + +INSERT INTO permission_role (rid, pid) VALUE ('2','1'); +INSERT INTO permission_role (rid, pid) VALUE ('1','3'); +INSERT INTO permission_role (rid, pid) VALUE ('1','4'); +INSERT INTO permission_role (rid, pid) VALUE ('3','4'); + +INSERT INTO user_role (rid, uid) VALUE ('1','1'); +INSERT INTO user_role (rid, uid) VALUE ('2','2'); + + diff --git a/src/main/java/top/fjy8018/shiro/dataobject/Permission.java b/src/main/java/top/fjy8018/shiro/dataobject/Permission.java new file mode 100644 index 0000000..1aeff10 --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/dataobject/Permission.java @@ -0,0 +1,17 @@ +package top.fjy8018.shiro.dataobject; + +import lombok.Data; + +/** + * @author F嘉阳 + * @date 2018/7/5 21:14 + */ +@Data +public class Permission { + + private Integer pid; + + private String name; + + private String url; +} diff --git a/src/main/java/top/fjy8018/shiro/dataobject/Role.java b/src/main/java/top/fjy8018/shiro/dataobject/Role.java new file mode 100644 index 0000000..212c700 --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/dataobject/Role.java @@ -0,0 +1,18 @@ +package top.fjy8018.shiro.dataobject; + +import lombok.Data; + +import java.util.HashSet; +import java.util.Set; + +@Data +public class Role { + + private Integer rid; + + private String name; + + private Set permissions = new HashSet<>(); + + private Set users = new HashSet<>(); +} diff --git a/src/main/java/top/fjy8018/shiro/dataobject/User.java b/src/main/java/top/fjy8018/shiro/dataobject/User.java new file mode 100644 index 0000000..6b41415 --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/dataobject/User.java @@ -0,0 +1,17 @@ +package top.fjy8018.shiro.dataobject; + +import lombok.Data; + +import java.util.HashSet; +import java.util.Set; + +@Data +public class User { + + private Integer uid; + + private String password; + + private Set roles = new HashSet<>(); + +} diff --git a/src/main/java/top/fjy8018/shiro/mapper/UserMapper.java b/src/main/java/top/fjy8018/shiro/mapper/UserMapper.java new file mode 100644 index 0000000..147534d --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/mapper/UserMapper.java @@ -0,0 +1,13 @@ +package top.fjy8018.shiro.mapper; + +import org.apache.ibatis.annotations.Param; +import top.fjy8018.shiro.dataobject.User; + +/** + * @author F嘉阳 + * @date 2018/7/5 21:24 + */ +public interface UserMapper { + + User findByUsername(@Param("username") String username); +} diff --git a/src/main/java/top/fjy8018/shiro/service/Impl/UserServiceImpl.java b/src/main/java/top/fjy8018/shiro/service/Impl/UserServiceImpl.java new file mode 100644 index 0000000..7cb1104 --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/service/Impl/UserServiceImpl.java @@ -0,0 +1,24 @@ +package top.fjy8018.shiro.service.Impl; + +import org.springframework.stereotype.Service; +import top.fjy8018.shiro.dataobject.User; +import top.fjy8018.shiro.mapper.UserMapper; +import top.fjy8018.shiro.service.UserService; + +import javax.annotation.Resource; + +/** + * @author F嘉阳 + * @date 2018/7/5 21:29 + */ +@Service +public class UserServiceImpl implements UserService { + + @Resource + private UserMapper userMapper; + + @Override + public User findByUsername(String username) { + return userMapper.findByUsername(username); + } +} diff --git a/src/main/java/top/fjy8018/shiro/service/UserService.java b/src/main/java/top/fjy8018/shiro/service/UserService.java new file mode 100644 index 0000000..ca2c7c8 --- /dev/null +++ b/src/main/java/top/fjy8018/shiro/service/UserService.java @@ -0,0 +1,12 @@ +package top.fjy8018.shiro.service; + +import top.fjy8018.shiro.dataobject.User; + +/** + * @author F嘉阳 + * @date 2018/7/5 21:27 + */ +public interface UserService { + + User findByUsername(String username); +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..34ce7e4 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,7 @@ +spring: + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://localhost:3306/db_imis2?useUnicode=true&characterEncoding=utf-8&useSSL=true + username: trs + password: shiro \ No newline at end of file diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..e3ea228 --- /dev/null +++ b/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file