Spring security --- Acegi部分配置信息

 

         认证处理过滤器authenticationProcessingFilter的配置

  1. < bean   id = "authenticationProcessingFilter"   class = "org.acegisecurity.ui.webapp.AuthenticationProcessingFilter" >   
  2.      < property   name = "filterProcessesUrl"   value = "/j_security_check" />   
  3.      < property   name = "authenticationFailureUrl"   value = "/index.jsp?login_error=1" />   
  4.      < property   name = "defaultTargetUrl"   value = "/main.do" />   
  5.      < property   name = "authenticationManager"   ref = "authenticationManager" />   
  6.      < property   name = "rememberMeServices"   ref = "" /> <!-可选 -- >   
  7. </ bean >  
  8. 说明:   
  9.     1)负责处理基于表单的身份验证请求。   
  10.     2)当接收到与filterProcessesUrl所定义相同的请求时,它会首先通过AuthenticationManager来验证用户身份。如果验证成功,则重定向到defaultTargetUrl所定义的成功登陆页面。如果验证失败,则再从 rememberMeServices中获取用户身份。若再获取失败,则重定向到auhenticationFailureUrl所定义的登陆失败页面。   
  11.     3)filterProcessesUrl:默认值为/j_acegi_security_check。该值必须与登录页面form的action值一致。   
  12.    form中输入用户名的input控件的name必须为j_username;输入密码的input控件的name必须为j_password。   
  13.     4)rememberMeServices 负责通过以cookie的形式保存先前的用户登录信息。在Authentication对象不存在时, rememberMeProcessingFilter会调用rememberMeServices的autoLogin()方法,尝试在cookies 中获取用户登录信息,如果存在则返回Authentication对象。在每次用户登录时,如果设置了RememberMe功能,在验证用户身份成功后,则会调用loginSuccess()方法记录用户信息在cookies中,否则调用loginFail()方法清除cookie。

 

      认证管理器authenticationManager的配置

 

  1. < bean   id = "authenticationManager"   class = "org.acegisecurity.providers.ProviderManager" >   
  2.      < property   name = "providers" >   
  3.          < list >   
  4.              < ref   local = "daoAuthenticationProvider" />   
  5.              < ref   local = "anonymousAuthenticationProvider" />   
  6.          </ list >   
  7.      </ property >   
  8. </ bean >   
  9. 说明:   
  10.     1)认证管理器用来管理身份验证提供者。它将验证的功能委托给多个Provider,并通过遍历Providers, 以保证获取不同来源的身份认证,若某个Provider能成功确认当前用户的身份,authenticate()方法会返回一个完整的包含用户授权信息的Authentication对象,否则会抛出一个AuthenticationException。   
  11.     2)无论成功与否,认证管理器都会发布一个ApplicationEvent事件对象。 

 身份验证提供者的配置

 

  1. < bean   id = "daoAuthenticationProvider"   class = "org.acegisecurity.providers.dao.DaoAuthenticationProvider" >   
  2.      < property   name = "userDetailsService"   ref = "userDao" />   
  3.      < property   name = "userCache"   ref = "userCache" />   
  4.      < property   name = "passwordEncoder"   ref = "passwordEncoder" /> <!-可选 -- >   
  5. </ bean >   
  6. < bean   id = "anonymousAuthenticationProvider"   class = "org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider" >   
  7.      < property   name = "key"   value = "anonymous" />   
  8. </ bean >   
  9.   
  10. < bean   id = "userDao"   class = "com.cjm.web.dao.impl.UserDaoImpl" >   
  11.      < property   name = "sessionFactory"   ref = "sessionFactory" />   
  12. </ bean >   
  13.   
  14. < bean   id = "userCache"   class = "org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache" >   
  15.      < property   name = "cache" >   
  16.          < bean   class = "org.springframework.cache.ehcache.EhCacheFactoryBean" >   
  17.              < property   name = "cacheManager" >   
  18.                  < bean   class = "org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />   
  19.              </ property >   
  20.              < property   name = "cacheName"   value = "userCache" />   
  21.          </ bean >   
  22.      </ property >   
  23. </ bean >   
  24.   
  25. < bean   id = "passwordEncoder"   class = "org.acegisecurity.providers.encoding.Md5PasswordEncoder" />   
  26. 说明:   
  27.     1)daoAuthenticationProvider:负责提供用户信息,包括用户名和密码。其中取用户名密码的工作交给userDetailsService来做。   
  28.     2)anonymousAuthenticationProvider:匿名用户身份验证。   
  29.     3)userDao:用于在数据库中获取用户信息。UserDaoImpl需要实现Acegi 提供的UserDetailsService接口类。   
  30.     4)userCache:缓存用户和资源相对应的权限信息。每当请求一个受保护资源时,daoAuthenticationProvider就会被调用以获取用户授权信息。如果每次都从数据库获取的话,那代价很高,对于不常改变的用户和资源信息来说,最好是把相关授权信息缓存起来。   
  31.     5)passwordEncoder:使用加密器对用户输入的明文进行加密。Acegi 提供了三种加密器:   
  32.         PlaintextPasswordEncoder---默认,不加密,返回明文   
  33.         ShaPasswordEncoder---哈希算法(SHA)加密   
  34.         d5PasswordEncoder---消息摘要(MD5)加密 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值