springBoot整合shiro

  

依赖包

  
 <代码> & lt; dependency>
  & lt; groupId> org.apache.shiro
  & lt; artifactId> shiro-spring
  & lt; version> 1.3.2
  & lt;/dependency>  
  

数据库表

  

一切从简,用户用户表,以及角色角色表
 springBoot整合shiro

  

 springBoot整合shiro

  

Shiro相关类

  

Shiro配置类

  
 <代码> @ configuration
  公开课ShiroConfig {
  @ bean
  公共ShiroFilterFactoryBean shirFilter (SecurityManager SecurityManager) {
  ShiroFilterFactoryBean ShiroFilterFactoryBean=new ShiroFilterFactoryBean ();//必须设置SecurityManager
  shiroFilterFactoryBean.setSecurityManager (securityManager);//setLoginUrl如果不设置值,默认会自动寻找网络工程根目录下的“/登录。jsp页”面或“/登录”映射
  shiroFilterFactoryBean.setLoginUrl ("/notLogin ");//设置无权限时跳转的url;
  shiroFilterFactoryBean.setUnauthorizedUrl ("/notRole ");//设置拦截器
  String> Map<字符串;,filterChainDefinitionMap=new LinkedHashMap<的在();//游客,开发权限
  filterChainDefinitionMap。put("/客人/* *”,“不久”);//用户,需要角色权限“用户”
  filterChainDefinitionMap。put("/用户/* *”,“角色[用户]”);//管理员,需要角色权限“admin”
  filterChainDefinitionMap。put("/管理/* *”,“角色[管理]”);//开放登陆接口
  filterChainDefinitionMap。put("/登录”、“不久”);//其余接口一律拦截//主要这行代码必须放在所有权限设置的最后,不然会导致所有url都被拦截
  filterChainDefinitionMap。把(“/* *”、“authc”);
  
  shiroFilterFactoryBean.setFilterChainDefinitionMap (filterChainDefinitionMap);
  System.out.println (“Shiro拦截器工厂类注入成功”);
  返回shiroFilterFactoryBean;
  }/* *
  *注入securityManager
  */@ bean
  公共SecurityManager SecurityManager () {
  DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager ();//设置领域。
  securityManager.setRealm (customRealm ());
  返回securityManager;
  }/* *
  *自定义身份认证领域;
  * & lt; p>
  *必须写这个类,并加@ bean注上解,目的是注入CustomRealm,
  *否则会影响CustomRealm类中其他类的依赖注入
  */@ bean
  公共CustomRealm CustomRealm () {
  返回新CustomRealm ();
  }
  } 
  

<强>注意:里面的SecurityManager类导入的应该是<代码>进口org.apache.shiro.mgt.SecurityManager; 但是,如果你是复制代码过来的话,会默认导入<代码> . lang。SecurityManager 这里也稍稍有点坑,其他的类的话,也是都属于shiro包里面的类

  

shirFilter方法中主要是设置了一些重要的跳转url,比如未登陆时,无权限时的跳转;以及设置了各类url的权限拦截,比如/用户开始的url需要用户权限,/admin开始的url需要管理员权限等

  
权限拦截过滤器/h5>   

当运行一个Web应用程序时,Shiro将会创建一些有用的默认滤波器实例,并自动地将它们置为可用,而这些默认的滤波器实例是被DefaultFilter枚举类定义的,当然我们也可以自定义滤波器实例,这些在以后的文章中会讲到

  

 springBoot整合shiro

           过滤器   解释               另一次   无参,开放权限,可以理解为匿名用户或游客         authc   无参,需要认证         注销   无参,注销,执行后会直接跳转到<代码> shiroFilterFactoryBean.setLoginUrl(); 设置的url         authcBasic   无参,表示httpBasic认证         用户   无参,表示必须存在用户,当登入操作时不做检查         ssl   无参,表示安全的网址请求,协议为https         烫发(用户)   参数可写多个,表示需要某个或某些权限才能通过,多个参数时写烫发(“用户,admin"),当有多个参数时必须每个参数都通过才算通过         角色(管理员)   参数可写多个,表示是某个或某些角色才能通过,多个参数时写的角色(“管理,user"),当有多个参数时必须每个参数都通过才算通过         其他(用户)   根据请求的方法,相当于烫发用户:方法,其中方法为post、get、删除等         端口[8081]   当请求的URL端口不是8081时,跳转到schemal://serverName: 8081 ?变量的名称其中schmal是协议http或https等等,serverName是你访问的主机,8081是端口端口,参数是你访问的URL里的吗?后面的参数            

springBoot整合shiro