1,Shiro提供了对Web环境的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的URL,然后进行相应的控制。
     ①配置的 ShiroFilter 实现类为:org.springframework.web.filter.DelegatingFilterProxy 。
     ②这是一个 Servlet Filter 的代理对象,它在IOC容器中去找实现了Filter接口的bean。
     ③它可以通过一个初始化参数"targetBeanName"来找到bean,也可以通过<filter-name>找到bean。
 
2,ShiroFilter 类似于SpringMvc中的前端控制器,是安全控制的入口点,其负责读取配置文件(如ini配置文件),然后判断该URL是否需要登陆/授权等工作。
     ①在SpringIOC容器中配置org.apache.shiro.spring.web.ShiroFilterFactoryBean的时候,该bean的名称必须要和 ShiroFilter 的<filter-name>一致。否则在服务加载的时候会报错。因为Shiro会在IOC容器中查找和<filter-name>对应的filter bean。
     
     下面是一个比较基本的Shiro配置内容:
     

  

     
 
3,受保护的URL如何进行配置
     ①[urls]部分的配置,其格式为:url=拦截器[参数],拦截器[参数]。
     ②如果当前请求的url匹配[urls]部分的某个url模式,将会执行器配置的拦截器。
     ③anon(anonymous)拦截器表示可以匿名访问。
     ④authc(authencation)拦截器标识需要身份认证通过后才能访问。
     ⑤logout(logout)拦截器表示登出/退出登录,它会清空shiro缓存信息
     ⑥url模式使用 Ant 风格模式
          [1]?匹配一个字符;
          [2]*匹配零个或多个字符;
          [3]**匹配路径中的零个或多个路径;
 
 
4,认证/授权基本步骤
     ①获取当前的 Subject,调用SecurityUtils.getSubject();
     ②判断当前用户是否已经认证,调用 Subject 的 isAuthenticated();
     ③或没有被认证,则把用户名和密码封装为 UserNamePassworkToken 对象
          [1]客户端提交的表单数据。
          [2]提交数据到SpringMVC的 handler 上。
          [3]获取用户名和密码。
     ④执行登录,调用 Subject 的 login(AuthencationToken);
     ⑤自定义Realm 方法,从数据库中获用户安全数据,返回给Shiro
          [1]实际上需要继承 org.apache.shiro.realm.AuthencatingRealm 类(仅仅实现认证,org.apache.shiro.realm.AuthorizingRealm 可以用来认证和授权)。
          [2]实现 doGetAuthenticationInfo(AuthenticationToken) 方法。
     ⑥最后由Shiro完成密码的比对。

Shiro在Web环境下集成Spring的大致工作流程的更多相关文章

  1. 在spring环境下集成ActiveMQ

    1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...

  2. 06_在web项目中集成Spring

    在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = ...

  3. web环境中的spring MVC

    1. web.xml文件的简单详解 在web环境中, spring MVC是建立在IOC容器的基础上,要了解spring mvc,首先要了解Spring IOC容器是如何在web环境中被载入并起作用的 ...

  4. 【Java面试】介绍下Spring IoC的工作流程

    Hi,我是Mic 一个工作了4年的粉丝,在面试的时候遇到一个这样的问题. "介绍一下Spring IOC的工作流程" 他说回答得不是很好,希望我能帮他梳理一下. 关于这个问题,我们 ...

  5. Spring Bean的生命周期、Spring MVC的工作流程、IOC,AOP

    1.Spring Bean的生命周期? (1)构造方法实例化bean. (2)构造方法设置对象属性. (3)是否实现aware接口,三种接口(BeanNameAware,BeanFactoryAwar ...

  6. ThreadLocal 在web环境下使用的边界问题

    ThreadLocal 相关分析,请查看http://wangxinchun.iteye.com/blog/1884228 另外一个必须要提的点是: ThreadLocal在线程池环境下的使用. 比如 ...

  7. Spring-IOC 在非 web 环境下优雅关闭容器

    当我们设计一个程序时,依赖了Spring容器,然而并不需要spring的web环境时(Spring web环境已经提供了优雅关闭),即程序启动只需要启动Spring ApplicationContex ...

  8. spring-cloud-kubernetes服务发现之在k8s环境下开发spring cloud应用

    通常情况下,我们的线上的服务在迁移到k8s环境下的时候,都是采用平滑迁移的方案.服务治理与注册中心等都是采用原先的组件.比如spring cloud应用,在k8s环境下还是用原来的一套注册中心(如eu ...

  9. Xcode7.1环境下上架iOS App到AppStore 流程① (Part 一)

    前言部分 之前App要上架遇到些问题到网上搜上架教程发现都是一些老的版本的教程 ,目前iTunesConnect 都已经迭代好几个版本了和之前的 界面风格还是有很大的差别的,后面自己折腾了好久才终于把 ...

随机推荐

  1. 深度网络中的Tricks

    数据增强(Data augmentation) 预处理(Pre-processing) 初始化(Initializations) 训练中的Tricks 激活函数(Activation function ...

  2. 浅谈浏览器http的缓存机制 good

    http://www.cnblogs.com/vajoy/p/5341664.html

  3. 前端 JS 修炼(第一天)包装对象、作用域、创建对象

    1.js基本概念以及注意 直接量 :程序中直接使用的数据值.下面列出的都是直接量: 1 12 //数字 2 1.2 //小数 3 "hello world" //字符串文本 4 t ...

  4. Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决

    Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException  : SQLSTATE[42000]: ...

  5. windows环境利用hexo+github搭建个人博客

    一.下载安装Git 下载地址:https://gitforwindows.org/ 二.下载安装node.js 下载地址:https://nodejs.org/en/ 三.安装hexo 利用 npm ...

  6. Spark学习之路(六)—— 累加器与广播变量

    一.简介 在Spark中,提供了两种类型的共享变量:累加器(accumulator)与广播变量(broadcast variable): 累加器:用来对信息进行聚合,主要用于累计计数等场景: 广播变量 ...

  7. Java8新特性——lambda表达式.(案例:公司业务)

    需求:现有一个员工姓名list,其中包含单字母索引.要求输出一个字符串,去掉所有单字母,所有名字首字母大写并用逗号隔开. package cn._2.thecompanyprocess; import ...

  8. Apple官文中的KVO 与 FBKVOController

    前言 本文将主要介绍以下内容: 详细列出Apple官文中KVO的注意事项(Apple KVO相关的引用皆摘自Apple官文). 介绍FBKVOController,以及它如何避免系统提供的KVO坑点. ...

  9. POJ 3680:Intervals(最小费用最大流)***

    http://poj.org/problem?id=3680 题意:给出n个区间[Li,Ri],每个区间有一个权值wi,要使得每个点都不被超过k个区间覆盖(最多能被k个区间覆盖),如果选取了第i个区间 ...

  10. CodeForces 691D:Swaps in Permutation(并查集)

    http://codeforces.com/contest/691/problem/D D. Swaps in Permutation   You are given a permutation of ...