acegi过滤器介绍-未觉池塘青草梦,阶前梧叶已秋声-iteye技术网站
2011年08月01日
   最近研究了下acegi,原因是我要进行flex的项目,但是不知道flex的权限如何实现,所以就想到了acegi。
  从网上下载了acegi发布的0.8版本的,这个版本所有接口都在net.sf中,我使用的是acegi1.7版本,这就面临着根据别人的例子自己做。
  首先谈下acegi中最重要的acegi filter。
  一,httpSessionContextIntegrationFilter
  
  说明:
  1,必须将filter配置为过滤器链中的第一个过滤器,是验证信息能跨越多个请求
  2,为了解决认证主题安全信息能在多个http请求之间保持共享,acegi将认证主体安全信息缓存于HttpSession中,当用户请求一个受限制资源时,acegi通过HttpSeesionContext实例则保存在acegi容器的SecurityContextHolder里,当请求结束之后,HttpSeesionContextIntergrationFilter执行相反操作,将SecurityContext中的认证主体安全信息重新转存到HttpSession中,然后从SecurityContextHolder 中清除对应的SecurityContext实例
  3,securityContextHolder是框架集容器,它保存着和用户关联 securityContext实例,SecurityContext承载着用户的账号以及权限信息,通过以下方法可以取到这些信息:securityContextHolder.getContext().getAuthenticat ion().
  二,logoutFilter
  
  
  
  
  
  
  
  
  
  说明
  1,负责处理退出系统后需要的清理工作
  2,layoutFilter过滤器的构造方法有两个参数:一个表示成功退出后转向的url,另外一个表示退出系统需要进行的操作,操作可以十多个。
  3,securityContextLogoutHanlder 操作类会把Httpsession销毁,清除SecurityContextHolder里的SecurityContext实例,把 RememberMeServices从cookies中清除,然后重定向到指定的退出登录页面
  4,filterPricessUrl:指定用于响应退出系统请求的url,其默认值为/j_acegi_lagout。当访问url为filterProcessUrl属性值时,logoutFilter过滤器会被调用
  三,认证处理过滤器authenticationPrcessingFilter
  
  
  
  
  
  
  
  说明
  1,负责处理基于表单的身份证验证请求
  2,当接收到与filterProcessesUrl所定义相同的请求时,它会首先通过 AuthenticationManager来验证用户身份,如果验证成功,则重定向到defaultTargetUrl所定义的成功登陆页面,如果验证失败,则再从rememberMeServices中获取用户身份,若再次获取失败,则重定向到authenticationFailureURl所定义的登陆失败页面
  3,filterProcessesUrl:默认/j_acege_security_check。该值必须与登录页面form的 action值一致。form中输入的用户名的input空间的name必须为j_username;输入密码的input空间必须为 j_password
  4,rememberMeServices负责通过以cookie的形式保存先前的用户登录信息。在 authentication对象不存在时,remberMeProcessingFilter会调用rememberMeServices的 autologin()方法,尝试在cookies中获取用户登陆信息,如果存在则返回Authentication对象,在每次登陆时,弱国设置了 rememberMe功能,在验证用户身份成功后,则会调用loginsuccess()方法记录用户信息在cookies中,否则调用 loginFail()方法清除cookies.
  四,认证管理器authenticationManager
  
  
  
  
  
  
  
  
  说明
  1,认证管理器用来管理身份验证提供者。它将验证的功能委托给多个provider,并通过便利providers,以保证获取不同来源的身份认证,若某个provider能成功确认当前用户的身份,authenticate()方法会返回一个完整的包含用户授权信息的 authentication对象,否则会抛出一个AuthenticationException.
  2,无论成功与否,认证管理器都会发布一个ApplicationEvent事件对象
  五,身份证提供者
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  说明
  1,daoAuthenticationProvider:负责提供用户信息,包括用户名和密码。其中取用户名密码的工作交给userDetaisService来做
  2,anonymousAuthenticationProvider:匿名用户身份验证
  3,userDao:用于在数据库中获取用户信息。userDaoImpl需要实现Acegi提供的UserDetailsService接口类
  4,userCache:缓存用户和资源相对应的权限信息,每当请求一个收保护资源时,daoAuthenticationProvider就会被调用以获取用户授权信息。如果每次都从数据库获取的话,那代价很高,对于不常改变的用户和资源信息来说,最好把相关的授权信息缓存起来
  5,passwordEncoder:使用加密器对用户输入的明文进行加密。acegi提供三种加密器:
  plaintextPasswordEncoder--默认,不加密,返回明文
  shaPasswordEncoder--哈希算法加密
  d5PasswoedEncoder-md5加密
  六,securityContextHolderAwareRequestFilter
  
  说明
  1,负责通过Decorate Model(装饰模式)装饰HttpServletRequest对象
  Wapper是 ServletRequest包装类HttpServletRequestWrapper的子类(savedReuqestAwareWrapper或者 SecurityContextHolderAwareRequestWrapper).附上获取用户权限信息,request参数,heager。 date,headers和cookies的方法
  七,anonymousProcessingFilter
  
  
  
  
  说明
  1,该过滤器用于判断ContextHolder中是否有authentication对象,如果没有就创建一个 authentication对象,其中包含的用户名是anonymous,用户权限是ROLE_ANONYMOUS,这使得没有登录的匿名用户就够自动的获得匿名的用户名和权限
  八,exceptionTranslationFilter
  
  
  
  
  
  
  
  
  
  
  
  
  
  说明
  1,该过滤器用于处理身份证和授权过程中的异常
  2,authernticationEntryPoint:将用户重定向到一个基于html的登录页面
  loginFormUrl:指定登陆页面
  ForceHttps:指定是否强制使用Https协议
  errorPage:之得那个访问拒绝时要跳转到的页面
  九,filternvocationInterceotor
  
  
  
  
  
  PATTERN_TYPE_APACHE_ANT
  /index.jsp*=ROLE_ANONYMOUS
  /accessDenied.jsp*=ROLE_ANONYMOUS
  /**/*.jsp*=ADMIN,SYS_MANAGER
  /**/*.htm*=ADMIN,SYS_MANAGER
  /**/*.action*=ADMIN,SYS_MANAGER
  
  
  
  说明
  1,该filter会首先调用authenticationManager判断用户是否已登录认证,如果没认证成功,则重定向到登陆界面,如果认证成功,则从 Authentication中获得用户的权限,然后从objectDefinintionSource属性获取各种URL资源所对应的权限,最后调用 AccessDecisionManage来判断用户所拥有的权限与当前受保护的url资源对应的权限是否匹配,如果匹配失败,则返回403错误给用户,如果匹配成果,则用户可以访问受保护的url资源
  十,访问决策管理器accessDecisionManager
  
  
  
  
  
  
  
  
  
  
  说明
  1,通过投票机制来决定是否可以访问某一资源,acegi提过三种投票策略。
  AffrimativeBased(至少一个投票者同意方可通过)
  ConsensusBased(多数投票者同意方可通过)
  UnanimousBased(所有投票者同意方可通过)
  2 ,allowIfAllAbstainDecisions:设定是否允许"没人反对就通过"的投票策略
  3,reolePrix:角色投票这支持的权限前缀,默认Role_.权限必须以rolePrefix设定的值开头才能进行投票
  以上是过滤器的作用,说一下,在acegi1.0版本以前所有接口都在net.sf,中1.0后是org中。并且在1.0以后SecurityEnforcementFilter 此过滤器被exceptionTranslationFilter代替。
  
  

acegi过滤器介绍-未觉池塘青草梦,阶前梧叶已秋声-iteye技术网站相关推荐

  1. 未觉池塘春草梦,阶前梧桐已秋声——2014.9-2015.9

    [前言] 不知不觉间我又走过了一年,开学我们就是一名大四的学生了,同时也是TGB第三年的学员了,在过去的一年里收获了很多,经历的这一年可谓是承上启下的转折点,下面就简单聊聊吧~ [计算机学习] 在TG ...

  2. SpringSecurity常用过滤器介绍

    SpringSecurity常用过滤器介绍 过滤器是一种典型的AOP思想 SecurityContextPersistenceFilter 首当其冲的一个过滤器,作用之重要,自不必多言. Securi ...

  3. ASP.NET Core MVC 过滤器介绍

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Ac ...

  4. Android自定义View之七色环颜色采集器: 续我未完的大学梦 !

    Android自定义View之七色环颜色采集器:续我未完的大学梦!! 一.前言. 在大学期间,看到机智云开源的这个rgb灯,蛮好奇的,这么漂亮的颜色采集,并且可以同步到设备rbg灯颜色,甚是不解!这个 ...

  5. 方立勋_30天掌握JavaWeb_Servlet Filter(过滤器)未完

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片 ...

  6. 织梦响应式炫酷摄影相册图集画册展示网站模板 带手机版

    介绍: 织梦响应式炫酷摄影相册图集画册展示网站模板 带手机版 采用织梦内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,摄影相册.图集画册类的网站都可以用该模板. 你只需要把图片和文章内容 ...

  7. 未检测到其他显示器_同维工控机显示器显示器没反应维修技术精湛

    没有比工控机无法打开时更多令人沮丧的技术难题.同维工控机显示器显示器没反应维修技术精湛但是,您不必难过,在这里我们将向您展示一些力士乐工控机故障维修解决问题的方法.如果您的力士乐无法开机,则可能是由于 ...

  8. 未名企鹅极客 | 医药数据管理中的短文本高效匹配技术

    大量行业数据.渠道流向数据在清洗的过程中,面临着诸多极大耗费人力的问题.在数据来源多样且格式不统一的情况下,人工匹配曾让很多信息员闻之色变.即使在人工智能和机器学习的时代下,由于各种原因导致的匹配误差 ...

  9. HTML5+CSS期末大作业:个人主页介绍主题——-我们的挚爱 (7页) 学生DW网页设计作业成品 大学生个人网站作业模板 简单个人网页制作

    HTML5+CSS期末大作业:个人主页介绍主题---我们的挚爱 (7页) 学生DW网页设计作业成品 大学生个人网站作业模板 简单个人网页制作 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅 ...

最新文章

  1. 浏览器设置是否显示图片,可随时切换
  2. create maven android project
  3. 小学英语运用计算机教学自评,信息技术在小学英语课堂中如何更有效地利用教学评价...
  4. 人和计算机在时间管理方面的相似性
  5. CCIE-LAB-第五篇-DHCP+DHCP-Realy+DHCP snooping
  6. R语言编程基础(1)
  7. 高并发架构系列:Kafka、RocketMQ、RabbitMQ的优劣势比较
  8. USES_CONVERSION W2A
  9. UML建模:学习笔记(1)
  10. 当你拥有足够的经验时,自然就会想到的东西---面向对象的设计原则!
  11. 项目管理人员达到最高层所需的八大能力
  12. 《Python实用爬虫案例》练习8:获取搜狗搜索引擎微信文章
  13. Tex中参考文献的引用方法
  14. QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
  15. 2018-2019-2 网络对抗技术 20165322 Exp4 恶意代码分析
  16. 一刀工具箱 - 成语查询工具
  17. 极米投屏h2服务器响应失败,极米h2升级断电后怎么办?是修还是换一台当贝投影F3?...
  18. c语言程序设计 doc,C语言程序设计精彩资料100例.doc
  19. 【移动开发】View的scrollTo()和scrollBy()区别
  20. 【Laravel系列6.4】管道过滤器

热门文章

  1. Unity 2017.1正式版发布
  2. python geopy 北斗导航_python – Geopy:计算GPS航向/方位
  3. java二维数组杨辉三角_实验----Java的二维数组的应用及杨辉三角的编写
  4. 关于浪潮服务器NF5280M5的介绍
  5. 电子商务管理系统mysql_电子商务数据库平台管理系统
  6. 【IntelliJ IDEA】idea常用java插件使用推荐详解
  7. ChatGPT的N种用法(持续更新中。。。)
  8. 人工智能里程碑ChatGPT之最全详解图解
  9. stc-isp 51单片机烧录软件的安装
  10. 在手机上用cdsn写博客