01.需要添加依赖
 在springboot项目中,使用shiro框架需要在pom.xml文件中去添加依赖:
 
 org.apache.shiro
 shiro-spring
 1.4.1
 
02.shiro核心对象配置
 这里需要配置一个配置类,使用的注解是@Configuration,这表示修饰的类会有多个注解@bean来修饰的方法,而@bean修饰的方法通常用于构造一个对象,并且交给spring容器进行
 第一步:创建 SpringShiroConfig 类。关键代码如下:
 package com.cy.pj.common.config;
 /**@Configuration 注解描述的类为一个配置对象,
 * 此对象也会交给 spring 管理
 */
 @Configuration
 public class SpringShiroConfig {//spring-shiro.xml
}
第二步:在 Shiro 配置类中添加 SecurityManager 配置,关键代码如下:
 @Bean
 public SecurityManager securityManager() {
 DefaultWebSecurityManager sManager=new DefaultWebSecurityManager();
 return sManager;
 }
 第三步:在 Shiro 配置类中添加 ShiroFilterFactoryBean 对象的配置。通过此对象设置资源匿名访问、认证访问。关键代码如下:
 /**
-  配置 ShiroFilterFactoryBean 对象 
-  基于此对象创建过滤器工厂,通过过滤器工厂创建过滤器,通过过滤器对请求过滤 
-  @param securityManager 
-  @return 
 */
 @Bean
 public ShiroFilterFactoryBean shiroFilterFactory (SecurityManager securityManager) {
 ShiroFilterFactoryBean sfBean=new ShiroFilterFactoryBean();
 //设置安全管理器
 sfBean.setSecurityManager(securityManager);//定义 map 指定请求过滤规则(哪些资源允许匿名访问,哪些必须认证访问) 
 LinkedHashMap<String,String> map= new LinkedHashMap<>();
 //静态资源允许匿名访问:“anon”
 map.put("/bower_components/",“anon”);
 map.put("/build/",“anon”);
 map.put("/dist/",“anon”);
 map.put("/plugins/",“anon”);
 //除了匿名访问的资源,其它都要认证(“authc”)后访问
 map.put("/**",“authc”);
 sfBean.setFilterChainDefinitionMap(map);
 return sfBean;
 }
  
Shiro 登陆页面呈现
-  服务端 Controller 实现 
 业务描述及设计实现
 当服务端拦截到用户请求以后,判定此请求是否已经被认证,假如没有认证应该先跳转到登录页面。
 第一步:在 PageController 中添加一个呈现登录页面的方法,关键代码如下:
 @RequestMapping(“doLoginUI”)
 public String doLoginUI(){
 return “login”;
 }
 第二步:修改 SpringShiroConfig 类中 shiroFilterFactorybean 的配置,添加登陆 url 的设置。关键代码见 sfBean.setLoginUrl("/doLoginUI")部分。/** 
- 配置 ShiroFilterFactoryBean 对象
- 基于此对象创建过滤器工厂,通过过滤器工厂创建过滤器,通过过滤器对请求过滤
- @param securityManager
- @return
 */
 @Bean
 public ShiroFilterFactoryBean shiroFilterFactory (SecurityManager securityManager) {
 ShiroFilterFactoryBean sfBean=new ShiroFilterFactoryBean();
 //设置安全管理器
 sfBean.setSecurityManager(securityManager);
 //设置登陆页面
 sfBean.setLoginUrl("/doLoginUI");
 //定义 map 指定请求过滤规则(哪些资源允许匿名访问,哪些必须认证访问)
 LinkedHashMap<String,String> map= new LinkedHashMap<>();
 //静态资源允许匿名访问:“anon”
 map.put("/bower_components/",“anon”);
 map.put("/build/",“anon”);
 map.put("/dist/",“anon”);
 map.put("/plugins/",“anon”);
 //除了匿名访问的资源,其它都要认证(“authc”)后访问
 map.put("/**",“authc”);
 sfBean.setFilterChainDefinitionMap(map);
 return sfBean;
 }
客户端页面实现
业务描述及设计实现。
 在/templates/pages/添加一个 login.html 页面,然后将项目部署到 web 服务器,并启动测试运行。
 关键代码分析及实现。
 具体代码见项目中 login.html。



















