本站首页    管理页面    写新日志    退出


«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告
本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:210
评论数量:205
留言数量:-19
访问次数:926542
建立时间:2007年5月10日




[acegi权限认证]整合ACEGI到现有系统-步骤祥解
文章收藏,  网上资源,  软件技术,  电脑与网络

李小白 发表于 2007/7/3 10:17:56

初次使用,有不足之处还请多多指教。 前提:现有系统里已经有了很多跟User相关的类例如UserContext, UserInfo等,在原来的action里已经实现了登陆验证,并且已经 把登陆成功后返回的UserContext保存到session中了,在目前的程序中很多地方都已经使用了从保存在session中的UserContext获取 用户信息的代码了(当然这是一个统一的方法) 目标:在不改变现有代码的情况下集成ACEGI到系统中(当然Action中的login是肯定要改的了),我的意思是不改变代码中获得UserContext的方式 过程: 1:修改web.xml,加入FilterToBeanProxy,增加applicationContext-acegi-security.xml文件,按照sample配置这个xml文件,相关的配置 从前的帖子上有,请执行查找。 2:改造登陆过程,login页面必须包含j_username, j_password这两个字段,用来存放username和password,以便在AuthenticationProcessingFilter 中获得用户输入的用户名和密码,这一点有写霸道,必须用这两个名字,要么不用,这是我在系统里修改的第一个地方,不过再想想,我原来 再action中得到用户名和密码就是用来验证的,现在acegi做了这件是,我把原来的字段改掉也没有什么影响。 3:再AuthenticationProcessingFilter中我使用了daoAuthenticationProvider来验证用户的合法性,对于DaoAuthenticationProvider,它的 关键在于userDetailsService这个属性,DaoAuthenticationProvider通过userDetailsService来获得UserDetails,而我们系统中获得用户信息的 方法远比org.acegisecurity.userdetails.jdbc.JdbcDaoImpl复杂,在现有系统中有一个UserService接口专门来处理User相关的事情,所以我 对UserService接口的实现类UserServiceImpl进行了改造是期实现UserDetailsService接口,返回UserServece对象。 4:现有系统中UserContext类已经包含了完整的用户信息,系统中很多地方都用到了这个类,所以这个类不能够废除,方法是使UserContext 实现UserServece,其实在UserServiceImpl返回的UserServece对象就是UserContext类型的。 5:实现自己的passwordEncoder,由于系统中password的加密方式跟acegi提供的不同,所以么实现自己的passwordEncoder,其实只需要 继承org.acegisecurity.providers.encoding.BasePasswordEncoder,实现org.acegisecurity.providers.encoding.PasswordEncoder即可 在encodePassword方法中实现现有的加密方法,在isPasswordValid方法中判断密码的合法性。 6:action.login中的改动,原来login中从页面获得用户输入的用户名,密码调用UserService进行验证,返回UserContext对象,然后把UserContext 对象set到Session相关的对象中去,例如(简单起见) 代码 session.setAttribute(someKey, uctx);    done 7:剩下的事情就是在acegi中配置权限了。


阅读全文(1473) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.900 second(s), page refreshed 144800788 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号