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

本文介绍 Acegi 安全框架的配置方法,重点讲解认证处理过滤器、认证管理器及身份验证提供者的配置细节。认证处理过滤器负责处理基于表单的身份验证请求;认证管理器管理身份验证提供者;身份验证提供者则负责提供用户信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值