为了防止用户直接访问相关的页面,我使用了filter, 如果有用户不登陆直接输入相应的url就在filter中检查是否登陆,没登陆直接跳转到error页面。     现在问题是我有很多个部署好的应用,其中有一个的地址是/ret,剩下几个地址是/ret/module1,/ret/module2。这个module1,module2中都有引用到ret中的页面,用的是<c:import>和<jsp:include>方式去引入的。这时发现在用户直接访问module1和module2中引用了ret中页面的时候filter是不执行的,所以用户还是可以直接访问到某些页面。
     
      如果要避免这种情况是不是要在所有有引用的应用中都给加filter才可以吗,还有没有其他解决方法,求思路JavaFilterURL

解决方案 »

  1.   

    filter中的url-mapping 配置成/*不可以实现拦截所有页面的么?
      

  2.   

    这样好像也不行,因为是2个不同的项目,其中一个引用了另外一个的页面,filter对这个引用的页面好像不起作用
      

  3.   

    sso单点登陆后对指定区域的用户要求进行二次登陆,类似密码卡那种,使用filter过滤如果没有进行密码卡登陆就reject,结果现在是子项目太多,如果用户直接输入子项目url就可以用sso登陆而不用输入密码卡。我又不想在每个子项目中都加入filter,这样很麻烦。后来发现每个子项目的首页都引用到了门户项目的一个页面,于是我就把这个页面加入到filter的url-parttern中,结果不起作用,如果实在不行估计我得给每个子项目加一个filter了
      

  4.   

    lz是在filter中检查session中有没有用户登陆信息来判断是否登陆吗?如果是的话,应该没问题。
      

  5.   

    我的确是这么做的,问题是如果是别的项目引用了相应页面,filter就不起作用了,不知道怎么解决
      

  6.   

    如果是其他项目引用相应页面的话,当前项目的filter肯定没用了。
    lz可以在该引用页的表头上添加检查是否存在用户信息session的语句,这样只要加载该页面都会校验,说白了就是把filter中的校验搬到固定页面上去