image.pn。Shiro实战。" />

Shiro实战

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

  • 开发工具 IDEA 2017.2.3
  • JDK 1.8
  • Spring 4.3.8
  • Shiro 1.3.2
搭建一个web的maven项目: Shiro实战
文章图片
_第1张图片" style="border:1px solid black; "> 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的拦截器
contextConfigLocationclasspath:applicationContext.xml shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecycletrue shiroFilter /* org.springframework.web.context.ContextLoaderListener spring org.springframework.web.servlet.DispatcherServletspring /

在资源文件夹新建applicationContext.xml文件
/login = anon# everything else requires authentication: /** = authc

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

配置log4j,控制台输出日志:log4j.properties
log4j.rootLogger=INFO, stdoutlog4j.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() 方法
代码实现
【Shiro实战】1.编写一个简单的login表单页面
2.编写Controller,获取输入的参数,创建token对象,传给 Subject.login
3.编写自定义Realm类,实现doGetAuthenticationInfo() 方法里的逻辑

    推荐阅读