Shiro实战

在官网给的源码中,学习如何搭建第一个基于shiro的例子:

  • 开发工具 IDEA 2017.2.3
  • JDK 1.8
  • Spring 4.3.8
  • Shiro 1.3.2

搭建一个web的maven项目:

Shiro实战<hello>_第1张图片
image.png

在pom.xml文件里添加


    
      org.apache.shiro
      shiro-core
      1.3.2
    
    
      org.apache.shiro
      shiro-spring
      1.3.2
    
    
      org.apache.shiro
      shiro-ehcache
      1.4.0
    
    
      net.sf.ehcache
      ehcache-core
      2.6.11
    
    
      org.apache.shiro
      shiro-web
      1.3.2
    
    
      javax.servlet
      javax.servlet-api
      3.1.0
      provided
    
    
      hsqldb
      hsqldb
      1.8.0.10
      runtime
    
    
      org.slf4j
      slf4j-log4j12
      1.7.21
      runtime
    
    
      org.slf4j
      jcl-over-slf4j
      1.7.25
      runtime
    
    
      log4j
      log4j
      1.2.17
      runtime
    
    
      org.springframework
      spring-context
      4.3.8.RELEASE
    
    
      org.springframework
      spring-jdbc
      4.3.8.RELEASE
    
    
      org.springframework
      spring-webmvc
      4.3.8.RELEASE
    
    
      javax.servlet
      jstl
      1.2
      runtime
    
  

修改web.xnk文件:配置springmvc前端控制器啊和shiro的拦截器

  
    contextConfigLocation
    classpath:applicationContext.xml
  
  
  
    shiroFilter
    org.springframework.web.filter.DelegatingFilterProxy
    
      targetFilterLifecycle
      true
    
  

  
    shiroFilter
    /*
  

  
    org.springframework.web.context.ContextLoaderListener
  

  
    spring
    org.springframework.web.servlet.DispatcherServlet
  
  
    spring
    /
  

在资源文件夹新建applicationContext.xml文件



    
    
    
    
        
        
        
    

    
    
    
        
        
    

    
    
    

    

    
    
    
    

    
    
    
    
        
    

    
    
    
        
        
        
        
        
        
        
        
            
                /login = anon

                # everything else requires authentication:
                /** = authc
            
        
    

配置springmvc的组件:spring-servlet.xml




    

    
        
        
    

    

    


配置log4j,控制台输出日志:log4j.properties

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n

# General Apache libraries
log4j.logger.org.apache=WARN

# Spring
log4j.logger.org.springframework=WARN

# Default Shiro logging
log4j.logger.org.apache.shiro=TRACE

# Disable verbose logging
log4j.logger.org.apache.shiro.util.ThreadContext=WARN
log4j.logger.org.apache.shiro.cache.ehcache.EhCache=WARN

先实现身份验证

流程

  • 1、收集用户身份/凭证,即如用户名/密码
  • 2、调用 Subject.login 进行登录,如果失败将得到相应AuthenticationException 异常,根据异常提示用户错误信息;否则登录成功
  • 3、创建自定义的 Realm 类,继承org.apache.shiro.realm.AuthorizingRealm 类,实现doGetAuthenticationInfo() 方法

代码实现

1.编写一个简单的login表单页面
2.编写Controller,获取输入的参数,创建token对象,传给 Subject.login
3.编写自定义Realm类,实现doGetAuthenticationInfo() 方法里的逻辑

你可能感兴趣的:(Shiro实战)