在以前的系统都是使用filter进行权限控制,但那种情况一般都是如果是不登陆的用户,只允许用户使用登陆和注册页面。现要做个网站,如果不登陆的用户有很多页面能使用,有很多url能请求,但也有很多页面和url请求需要登陆之后才能使用。如果再用filter的话,会造成filter的if很罗嗦,如下:
if(!"/page1".equals(requesrUrl)&&!"/page2".equals(requesrUrl)&&!"/page3".equals(requesrUrl)&&!"/page4".equals(requesrUrl)......)
不知道有没有更好的办法。
换句话说用filter控制的确很好,但那是在在登陆前能使用页面少的情况下使用的,但登陆前能使用的页面特多怎么办?
谢谢!

解决方案 »

  1.   

    <filter>
    <filter-name>myFilter</filter-name>
    <filter-class>com.hisoft.util.MyFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>myFilter</filter-name>
    <url-pattern>/chat/*</url-pattern>
    <url-pattern>/chat.jsp</url-pattern>
    </filter-mapping>这个是我写的一个filter,不要在filter里面用if判断,直接将需要过滤的(登录后才能访问的)地址配置到url-pattern里面就可以了。
    上面那个就是chat文件夹下面的所有页面和chat.jsp必须登录后才能访问
      

  2.   

    写个xml配置文件,配置对应的url与权限,然后使用过滤器
      

  3.   

    其实配置也麻烦的,有时要加多个 filter-mapping,如查以后要求改变的话,还得跑回来改配置文件,重启服务器.....从用户的角度下手也不错,建一个公共的账户,如果前台没有登陆,则系统默认按这个账号来进行操作在权限的配置上,将这个账户可以访问的页面配好就行了,这一切都可以动态进行,随时增减可以访问的页面
      

  4.   

    一般就是在filter判断,麻烦不是问题
      

  5.   

    一般把权限和你文件的路径结合起来处理会方便很多,这就要前期的设计了.并不是说把需要判断权限的路径一个一个挑出来做处理,那样太痛苦了.
    2L说得好啊~~过滤器过滤的路径是可以配置的,LZ可以试试
      

  6.   

    2L的给我提供了思路,以前配置filter时只配置/*,看来还是自己太局限了,我计划把有权限的jsp页面放到private文件夹下面,把有控制权限的servlet,url前也加上private,这样直接配置/private/*