Acegi配置指南.docx
《Acegi配置指南.docx》由会员分享,可在线阅读,更多相关《Acegi配置指南.docx(33页珍藏版)》请在冰豆网上搜索。
![Acegi配置指南.docx](https://file1.bdocx.com/fileroot1/2023-1/26/c90efa27-2ed3-49cd-b5bb-bf2eb0aef737/c90efa27-2ed3-49cd-b5bb-bf2eb0aef7371.gif)
Acegi配置指南
Acegi配置指南
(1)
AcegiDemo
web.xml配置
代码:
...
AcegiFilterChainProxy
org.acegisecurity.util.FilterToBeanProxy
targetBean
filterChainProxy
...
AcegiFilterChainProxy
/*
...
说明:
采用Web的过滤器,构造一个过滤器链代理。
初始参数:
参数名
描述
targetBean
从Spring中查找Bean名一致的类,交由该类处理真正的Web过滤。
推荐使用。
targetClass
从JVM中查找类名一致的类,交由该类处理真正的Web过滤。
不同J2EE容器可能会导致不同结果,会被targetBean参数覆盖。
不推荐使用。
init
初始值。
可能值包括:
--[if!
supportLists]-->Ø
--[endif]-->lazy:
延迟加载。
主要解决由于Spring采用ContextLoaderServlet加载模式时有可能会晚于该filter而导致filter加载失败的问题。
lifecycle
指定生命周期。
可能值包括:
--[if!
supportLists]-->Ø
--[endif]-->servlet-container-managed:
容器托管。
一般情况下,Acegi的Filter采用Spring的AOP回调,启动和结束调用beforeXxx()和afterXxx()方法。
如果采用J2EE规范中提供的filter方法init()和destroy(),设置该参数。
acegi.xml配置
过滤器链(filterChainProxy)
代码:
...
--过滤器链代理-->
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,
basicProcessionFilter,
exceptionTranslationFilter,
filterInvocationInterceptor
...
说明:
过滤器链,配置一组过滤器。
参数:
参数
描述
filterInvocationDefinitionSource
指定一组过滤器的Bean名。
过滤器:
过滤器
描述
httpSessionContextIntegrationFilter
负责完成Acegi上下文与HTTPSession同步。
basicProcessionFilter
负责完成用户的认证。
exceptionTranslationFilter
负责处理认证和授权中出现的异常。
filterInvocationInterceptor
负责完成用户的授权。
SpringBean关系图:
--[if!
vml]-->
--[endif]-->
说明:
每个图块为一个SpringBean。
斜体Bean和同名正体Bean为同一个Bean。
HTTP会话集成(httpSessionContextIntegrationFilter)
代码:
--HTTP会话集成-->
说明:
负责完成Acegi上下文与HTTPSession同步。
如果HTTPSession中存放了之前的认证信息,将其还原到Acegi上下文中。
退出应用时会清除掉HTTPSession中的认证信息。
参数:
Bean
参数
描述
httpSessionContextIntegrationFilter
HTTP会话集成
allowSessionCreation
是否创建Session。
可能值包括:
--[if!
supportLists]-->Ø
--[endif]-->true:
创建Session。
默认值。
--[if!
supportLists]-->Ø
--[endif]-->false:
不创建Session。
基本认证(basicProcessionFilter)
代码:
--HTTP基本认证-->
--认证管理器-->
--认证源提供者-->
--用户信息提供者(内存级)-->
admin=password,ROLE_ADMIN
--HTTP基本认证入口点-->
说明:
负责完成用户的认证,会调用认证管理器进行用户认证。
如果认证不成功调用EntryPoint,构造返回信息,如401,浏览器会弹出对话框要求用户输入用户名和密码。
需要指派认证管理器、认证源和EntryPoint。
参数:
Bean
参数
描述
basicProcessingFilter
基本认证过滤器
authenticationManager
指派认证管理器。
authenticationEntryPoint
指派EntryPoint。
authenticationManager
认证管理器
providers
指派认证源提供者。
多值。
daoAuthenticationProvider
DAO认证源提供者
userDetailsService
指派认证实现服务。
inMemDaoImpl
用户信息源(内存)
userMap
用户名/密码/角色信息,写死在配置文件中。
一般用于演示。
格式:
uid=pw,role
basicProssingFilterEntryPoint
基本认证入口点
realmName
返回到浏览器的提示信息:
域名。
SpringBean关系图:
--[if!
vml]-->
--[endif]-->
说明:
每个图块为一个SpringBean。
斜体Bean和同名正体Bean为同一个Bean。
异常处理(exceptionTranslationFilter)
代码:
--异常处理-->
说明:
负责处理认证和授权中出现的异常。
如果出现异常,调用EntryPoint。
参数:
Bean
参数
描述
exceptionTranslationFilter
异常处理过滤器
authenticationEntryPoint
指派EntryPoint。
createSeesionAllowed
是否创建Session。
可能值包括:
--[if!
supportLists]-->Ø
--[endif]-->true:
创建Session。
默认值。
--[if!
supportLists]-->Ø
--[endif]-->false:
不创建Session。
SpringBean关系图:
--[if!
vml]-->
--[endif]-->
说明:
每个图块为一个SpringBean。
斜体Bean和同名正体Bean为同一个Bean。
授权拦截(filterInvocationInterceptor)
代码:
--授权拦截-->
PATTERN_TYPE_APACHE_ANT
/securedpage.jsp=ROLE_ADMIN
--授权策略-->
--投票策略实现-->
负责完成用户的授权。
给受保护的Web资源指定角色,指定授权策略。
参数:
Bean
参数
描述
filterInvocationInterceptor
授权拦截器
authenticationManager
指派认证管理器。
accessDecisionManager
指派访问策略管理器。
objectDefinitionSource
Web资源/角色信息,写死在配置文件中。
一般用于演示。
格式:
/uri=role
accessDecisionManager
授权策略管理器
decisionVoters
指派投票策略。
多值。
roleVoter
投票策略实现
无
SpringBean关系图:
--[if!
vml]-->
--[endif]-->
说明:
每个图块为一个SpringBean。
斜体Bean和同名正体Bean为同一个Bean。
监听器
代码:
--认证监听器-->
--授权监听器-->
说明:
监听Acegi的认证/授权过程,并生成日志。
完整关系图
--[if!
vml]-->
--[endif]-->
说明:
每个图块为一个SpringBean。
斜体Bean和同名正体Bean为同一个Bean。
Acegi配置指南
(2)
认证源配置
DAO认证源
代码:
--HTTP基本认证-->
--认证管理器-->
--认证源提供者DAO-->
--
-->
--用户信息提供者(内存级)-->
--
admin=password,ROLE_ADMIN
-->
users.properties"/>
--用户信息提供者(数据库级)-->
selectusername,password,enabledfromuserswhereusername=?
selectusername,authorityfromuserswhereusername=?
--
selectusername,authorityfromauthoritieswhereusername=?
-->
--明文密码编码-->
--MD5密码编码-->
--用户信息缓存-->
参数:
Bean
参数
描述
daoAuthenticationProvider
Dao认证源提供者
userDetailsService
指派用户信息提供者(必需)
passwordEncoder
指派密码编码器
userCache
指派缓存
saltSource
指定加盐模式
forcePrincipalAsString
hideUserNotFoundExceptions
includeDetailsObject
messageSource
postAuthenticationChecks
preAuthenticationChecks
inMemDaoImpl
用户信息源(内存)
userProperties
Properties,可以指定Properties文件路径。
userMap
Map,写死在xml中。
jdbcDaoImpl
用户信息源(数据库)
usersByUsernameQuery
查询用户信息的SQL①
authoritiesByUsernameQuery
查询用户权限的SQL②
dataSource
指定数据源
plaintextPasswordEncoder
密码编码器(明文)
ignorePasswordCase
是否忽略密码大小写,默认值为否
md5PasswordEncoder
密码编码器(MD