依赖包
<代码> & lt; dependency> & lt; groupId> org.apache.shiro & lt; artifactId> shiro-spring & lt; version> 1.3.2 & lt;/dependency> 代码>
数据库表
一切从简,用户用户表,以及角色角色表
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枚举类定义的,当然我们也可以自定义滤波器实例,这些在以后的文章中会讲到
过滤器 解释 另一次 无参,开放权限,可以理解为匿名用户或游客 authc 无参,需要认证 注销 无参,注销,执行后会直接跳转到<代码> shiroFilterFactoryBean.setLoginUrl(); 代码>设置的url authcBasic 无参,表示httpBasic认证 用户 无参,表示必须存在用户,当登入操作时不做检查 ssl 无参,表示安全的网址请求,协议为https 烫发(用户) 参数可写多个,表示需要某个或某些权限才能通过,多个参数时写烫发(“用户,admin"),当有多个参数时必须每个参数都通过才算通过 角色(管理员) 参数可写多个,表示是某个或某些角色才能通过,多个参数时写的角色(“管理,user"),当有多个参数时必须每个参数都通过才算通过 其他(用户) 根据请求的方法,相当于烫发用户:方法,其中方法为post、get、删除等 端口[8081] 当请求的URL端口不是8081时,跳转到schemal://serverName: 8081 ?变量的名称其中schmal是协议http或https等等,serverName是你访问的主机,8081是端口端口,参数是你访问的URL里的吗?后面的参数