springBoot2.0 配置shiro实现权限管理( 二 )


9) :密码模块,Shiro 提高了一些常见的加密组件用于如密码加密/解密的
1.3 过滤器
当 Shiro 被运用到 web 项目时,Shiro 会自动创建一些默认的过滤器对客户端请求进行过滤 。以下是 Shiro 提供的过滤器
/admins/**=anon# 表示该 uri 可以匿名访问/admins/**=auth# 表示该 uri 需要认证才能访问/admins/**=authcBasic# 表示该 uri 需要 httpBasic 认证/admins/**=perms[user:add:*]# 表示该 uri 需要认证用户拥有 user:add:* 权限才能访问/admins/**=port[8081]# 表示该 uri 需要使用 8081 端口/admins/**=rest[user]# 相当于 /admins/**=perms[user:method],其中,method 表示get、post、delete 等/admins/**=roles[admin]# 表示该 uri 需要认证用户拥有 admin 角色才能访问/admins/**=ssl# 表示该 uri 需要使用 https 协议/admins/**=user# 表示该 uri 需要认证或通过记住我认证才能访问/logout=logout# 表示注销,可以当作固定配置
anon,,auchc,user 是认证过滤器 。
perms,roles,ssl,rest,port 是授权过滤器 。
-- 权限表 --CREATE TABLE permission (pid BIGINT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(255) NOT NULL DEFAULT '',url VARCHAR(255) DEFAULT '',PRIMARY KEY (pid)) ENGINE = InnoDB DEFAULT CHARSET = utf8;INSERT INTO permission VALUES ('1', 'add', '');INSERT INTO permission VALUES ('2', 'delete', '');INSERT INTO permission VALUES ('3', 'edit', '');INSERT INTO permission VALUES ('4', 'query', '');-- 用户表 --CREATE TABLE user(uid BIGINT(11) NOT NULL AUTO_INCREMENT,username VARCHAR(255) NOT NULL DEFAULT '',password VARCHAR(255) NOT NULL DEFAULT '',PRIMARY KEY (uid)) ENGINE = InnoDB DEFAULT CHARSET = utf8;INSERT INTO user VALUES ('1', 'admin', '123');INSERT INTO user VALUES ('2', 'demo', '123');-- 角色表 --CREATE TABLE role(rid BIGINT(11) NOT NULL AUTO_INCREMENT,rname VARCHAR(255) NOT NULL DEFAULT '',PRIMARY KEY (rid)) ENGINE = InnoDB DEFAULT CHARSET = utf8;INSERT INTO role VALUES ('1', 'admin');INSERT INTO role VALUES ('2', 'customer');-- 权限角色关系表 --CREATE TABLE permission_role (rid BIGINT(11) NOT NULL ,pid BIGINT(11) NOT NULL ,KEY idx_rid (rid),KEY idx_pid (pid)) ENGINE = InnoDB DEFAULT CHARSET = utf8;INSERT INTO permission_role VALUES ('1', '1');INSERT INTO permission_role VALUES ('1', '2');INSERT INTO permission_role VALUES ('1', '3');INSERT INTO permission_role VALUES ('1', '4');INSERT INTO permission_role VALUES ('2', '1');INSERT INTO permission_role VALUES ('2', '4');-- 用户角色关系表 --CREATE TABLE user_role (uid BIGINT(11) NOT NULL ,rid BIGINT(11) NOT NULL ,KEY idx_uid (uid),KEY idx_rid (rid)) ENGINE = InnoDB DEFAULT CHARSET = utf8;INSERT INTO user_role VALUES (1, 1);INSERT INTO user_role VALUES (2, 2);
三、
1..java
package com.example.demo2.entity;import lombok.Getter;import lombok.Setter;import java.io.Serializable;/*** @author sssr* @version 1.0* @Description:权限* @date 2019/2/17*/@Getter@Setterpublic class Permission implements Serializable {private Long id;private String name;private String url;}
2.Role.java
package com.example.demo2.entity;import lombok.Getter;import lombok.Setter;import java.io.Serializable;import java.util.HashSet;import java.util.Set;/*** @author ssr* @version 1.0* @Description:角色* @date 2019/2/17*/@Getter@Setterpublic class Role implements Serializable {private Long id;private String name;private Set permissions = new HashSet<>();private Set users = new HashSet<>();}
3.User.java
package com.example.demo2.entity;import lombok.Getter;import lombok.Setter;import java.io.Serializable;import java.util.HashSet;import java.util.Set;/*** @author sssr* @version 1.0* @Description:用户* @date 2019/2/16*/@Getter@Setterpublic class User implements Serializable {private Long id;private String username;private String password;private Set