AcegiWord文档下载推荐.docx
- 文档编号:1464807
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:21.42KB
AcegiWord文档下载推荐.docx
《AcegiWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《AcegiWord文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。
<
listener>
listener-class>
org.springframework.web.context.ContextLoaderListener
/listener-class>
/listener>
context-param>
param-name>
contextConfigLocation<
/param-name>
param-valueWEB-INF/applicationContext.xml,/WEB-INF/securityAcegi.xml
/param-value>
/context-param>
其次,继续在web.xml中声明过滤器,对所有的http请求进行拦截.
FilterToBeanProxy顾名思义就是将Acegi过滤器Bean的代理,它将所有的http请求一次分派给targetClass这个目标Bean.FilterChainProxy是过滤器链代理Bean.
filter>
filter-name>
AcegiFilterChainProxy<
/filter-name>
filter-class>
org.acegisecurity.util.FilterToBeanProxy
/filter-class>
init-param>
targetClass<
param-value>
org.acegisecurity.util.FilterChainProxy
/init-param>
/filter>
filter-mapping>
url-pattern>
/*<
/url-pattern>
/filter-mapping>
在securityAcegi.xml中声明FilterChainProxy的实例,来处理所有的请求,FilterChainProxy是一个过滤器链的代理Bean,所有的请求会在过滤器间依次进行过滤.
beanid="
filterChainProxy"
class="
org.acegisecurity.util.FilterChainProxy"
>
propertyname="
filterInvocationDefinitionSource"
value>
!
--转化为小写-->
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
--使用ANT类型的正则表达式-->
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,rememberMeProcessingFilter,logoutFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
/value>
/property>
/bean>
下面分别介绍过滤器及其实现:
HttpSessionContextIntegrationFilter
该Filter负责每次请求从HttpSession的attribute中获取Authentication对象,然后存于一个新的ContextHolder对象中,这样可以让该次请求过程中的任何Filter都可以通过ContextHolder来共享Authentication,而不需要从HttpSession中取,减少传HttpRequest参数的麻烦.在HttpRequest结束后再将ContextHolder中的Authentication对象存回到HttpSession中供下次HttpRequest使用,最后把刚才生成的ContextHolder对象销毁.这样就达到了让Authentication对象跨越多个请求的目的.注意此filter须在调用其他Acegifilter前使用:
--从Session中获取Authentication对象-->
httpSessionContextIntegrationFilter"
org.acegisecurity.context.HttpSessionContextIntegrationFilter"
/>
该Filter负责处理登陆身份验证.当接受到与filterProcessesUrl所定义相同的请求时,它会首先通过AuthenticationManager来验证用户身份.如果验证成功,则重定向到defaultTargetUrl所定义的成功登陆页面.如果验证失败,则再从rememberMeServices中获取用户身份,若再获取失败,则重定向到auhenticationFailureUrl所定义的登陆失败页面
--HTML表单认证处理filter-->
authenticationProcessingFilter"
org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"
authenticationManager"
ref="
--登陆失败转向的页面-->
authenticationFailureUrl"
--<
value>
/accegi_b/login.jsp?
login_error=1<
/value>
-->
/accegi_b/login.jsp?
login_error=1<
--登陆成功转向的页面-->
defaultTargetUrl"
/index.do<
--要验证的地址-->
filterProcessesUrl"
/j_acegi_security_check<
--出现异常所对应的地址-->
exceptionMappings"
--登陆失败org.acegisecurity.AuthenticationException=/login.jsp?
error=fail
--已登陆了org.acegisecurity.concurrent.ConcurrentLoginException=/login.jsp?
error=too
rememberMeServices"
ref="
org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices"
propertyname="
userDetailsService"
ref="
inMemoryDaoImpl"
jdbcDaoImpl"
--key是用来保证cookie的真实性,有效性-->
key"
value="
该Filter负责处理退出登录后所需要的清理工作.它会把session销毁,把ContextHolder清空,把rememberMeService从cookies中清除掉,然后重定向到指定的退出登陆页面.
--注销处理filter-->
org.acegisecurity.ui.logout.LogoutFilter"
--定义用户注销的地址-->
/j_acegi_logout"
--离开后所转向的位置-->
constructor-argvalue="
/index.do"
constructor-arg>
list>
refbean="
beanclass="
org.acegisecurity.ui.logout.SecurityContextLogoutHandler"
/list>
/constructor-arg>
该Filter会首先调用AuthenticationManager判断用户是否已登陆认证,如还没认证成功,则重定向到登陆界面.认证成功,则从Authentication中获取用户的权限.然后从objectDefinitionSource属性获取各种URL资源所对应的权限.最后调用AccessDecisionManager来判断用户所拥有的权限与当前受保护的URL资源所对应的权限是否相匹配.如果匹配失败,则返回403错误给用户.匹配成功则用户可以访问受保护的URL资源
--对请求进行拦截,访问前进行权限检查-->
filterInvocationInterceptor"
org.acegisecurity.intercept.web.FilterSecurityInterceptor"
accessDecisionManager"
refbean="
--定义了什么样的资源需要什么样的角色-->
objectDefinitionSource"
/hello.htm=ROLE_ANONYMOUS,ROLE_USER
/logoff.jsp=ROLE_ANONYMOUS,ROLE_USER
/switchuser.jsp=ROLE_SUPERVISOR
/j_acegi_switch_user=ROLE_SUPERVISOR,ROLE_ADMIN
/admin/**=ROLE_ADMIN
SecurityContextHolderAwareRequestFilter
该Filter负责通过DecorateModel(装饰模式),装饰的HttpServletRequest对象.其Wapper是ServletRequest包装类HttpServletRequestWrapper的子类(SavedRequestAwareWrapper或者SecurityContextHolderAwareRequestWrapper),附上获取用户权限信息,request参数,header,Date,headers和cookies的方法.
securityContextHolderAwareRequestFilter"
class="
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter"
该Filter负责处理HTTP头的认证信息,如从Spring远程协议(如Hessian和Burlap)或普通的浏览器如IE,Navigator的HTTP头中获取用户信息,将他们转交给通过authenticationManager属性装配的认证管理器.如果认证成功,会将一个Authentication对象放到会话中,否则,如果认证失败,会将控制转交给认证入口点(通过authenticationEntryPoint属性装配)
basicProcessingFilterEntryPoint"
org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint"
realmName"
ContactsRealm<
该Filter负责在用户登录后在本地机上记录用户cookies信息,免除下次再次登陆.检查AuthenticationManager中是否已存在Authentication对象,如果不存在则会调用RememberMeServices的aotoLogin方法来从cookies中获取Authentication对象
--利用cookie自动登陆-->
rememberMeProcessingFilter"
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter"
该Filter负责为当不存在任何授权信息时,自动为Authentication对象添加userAttribute中定义的匿名用户权限
anonymousProcessingFilter"
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter"
"
userAttribute"
value="
anonymousUser,ROLE_ANONYMOUS"
该过滤器负责处理各种异常,然后重定向到相应的页面中.
exceptionTranslationFilter"
org.acegisecurity.ui.ExceptionTranslationFilter"
authenticationEntryPoint"
org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"
loginFormUrl"
/login.jsp"
forceHttps"
false"
accessDeniedHandler"
bean
org.acegisecurity.ui.AccessDeniedHandlerImpl"
errorPage"
/error.jsp"
2.认证管理
在Acegi中,通过认证管理器负责确定用户身份,一个认证管理器由authenticationManager接口进行定义.
Acegi提供了一个authenticationManager的实现AuthenticationProvider,它负责把
第二个文档
关键字:
web框架
对于任何一个完整的应用系统,完善的认证和授权机制是必不可少的.在基于SpringFramework的WEB应用中,我们可以使用Acegi作为安全架构的实现.本文将介绍如何在基于Spring构架的Web应用中使用Acegi,并且详细介绍如何配置和扩展Acegi框架以适应实际需要.
1.概述
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为AcegiSecuritySystemforSpring,当前版本为
0.8.3.它使用了Spring的方式提供了安全和认证安全服务,包括使用BeanContext,拦截器和面向接口的编程方式.通过精心
配置Acegi安全系统能够轻松地适用于复杂的安全需求.它既能应用于WEB应用也能应用于非WEB应用.在本文的示例程序
里,我将演示如何将Acegi应用于WEB应用程序.通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi
使其能够从数据库中读取配置信息.
2.例子说明
本文的例子是一个联系人管理程序,使用SpringFramework1.2.4和Acegi0.8.3,数据库采用Mysql.程序的目录结构如下:
acegi-sample
contactadd.jsp//增加联系人页面
contactedit.jsp//编辑联系人页面
contactlist.jsp//联系人列表页面
contactmainterance.jsp//联系人操作页面
index.jsp//主页面
login.jsp//登录页面
logoff.jsp//登出页面
WEB-INF
web.xml
applicationContext-basic.xml
applicationContext-security-acegi.xml
log4j.properties
src
sample//java代码目录
classes
lib//依赖包目录
db//建表脚本目录
3.配置文件说明
接下来,我们将进入本文的重要内容,开始对Acegi应用程序所牵涉到的配置文件进行一一说明.
3.1web.xml
首先声明SpringFramework的配置文件列表.为了便于管理,将业务方法相关的配置文件和Acegi安全配置相关的配置文件分
开.
&
lt;
context-param&
gt;
/context-param&
param-name&
/param-name&
contextConfigLocation
param-value&
/param-value&
/WEB-INF/applicationContext-basic.xml
/WEB-INF/applicationContext-security-acegi.xml
其次声明Acegi过滤器.
filter&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Acegi