今天在用acegi做系统验证的时候碰到几个问题

今天在用acegi做系统验证的时候碰到几个问题:
  配置好acegi+struts2+spring+hibernate后。
  1、登录acegi验证失败
  在struts2中,用标签书写登录页面,如下所示:
  <s:form action="/loginCheck.htm" method="post" enctype="multipart/form-data">
  <s:textfield name="j_username" label="%{getText('loginName')}"></s:textfield>
  <s:password name="j_password" id="j_password" label="%{getText('password')}"></s:password>
  <s:submit value="%{getText('OK')}"></s:submit>
  </s:form>
  结果,导致验证总是通不过,每次登录都被转回登录页面。
  开始的时候,怀疑acegi配置错误,反复检查,研究,没有发现问题所在。
  最后在验证的时候,也就是从数据库取出登录信息,装配到UserDetails的时候,把密码置为空(已经处于疯狂状态下的做法)。
  结果奇迹般的验证通过了!
  难道从登录表单传来的中国化工物流网密码是空的?
  为啥呢?
  对比以前的项目。发现在form标签中多了enctype的属性设置(此处是照抄struts2标签示例,当时不明白该标签的意思,也在w2school查到是如下意思:
  值描述application/x-www-form-urlencoded在发送前编码所有字符(默认)multipart/form-data
  不对字符编码。
  在使用包含文件上传控件的表单时,必须使用该值。
  text/plain空格转换为 "+" 加号,但不对特殊字符编码。
  ,觉得没啥问题,也就把该标签加上去了。)
  去掉该标签后,成功验证登录。
  2、成功登录后,自动跳转到favicon.ico文件
  这是个老问题,之前一直就存在,没有从根本上解决。只是在根目录下放了一个favicon.ico以避免出现404的错误。但是在google浏览器下,他老是会弹出一个下载框,下载favicon.ico。
  在一个偶然的情况,发现有人说是用了acegi的问题,然后在baidu上查找:acegi favicon.ico
  无果。
  转战google,在第一页就找到了需要的答案,不过是全英文的。
  他的意思就是说,在你的权限第一的地方(acegi配置文件重),加上如下一行就可以:
  /favicon.ico=PRIV_ANONYMOUS
  这一行的意思就是说,允许任何人访问favicon.ico文件,不管是否通过了登录验证。
  3、登录成功后跳转的问题
  比如,我在acegi配置文件中配置了,如果没有登录,则可以范文a.htm,b.htm,login.html,index.html,favicon.ico。
  当我登录的时候,我在地址栏输入地址+不存在的网页地址,比如:http://localhost/fsjhfihfi.html。则他回自动跳转到login.html要求你登录。
  但是在登录成功后,会继续跳转到fsjhfihfi.html,而该页面是不存在的。会报404错误,也无法后退。后退就退出去了。。。。
  解决方法是,在登录页面,也就是login.html加上清空session的命令。
  OK。

posted @ 2012-10-25 18:53  eggbucket  阅读(283)  评论(0编辑  收藏  举报