求:过滤或屏蔽用户在地址栏输入URL来访问系统的方案
问题:
让用户只能通过系统提供的功能和操作点(如:按钮或热连接等)来进入页面,如果用户直接在地址栏输入URL,就不让他访问。
我的解决方案:
1、在Filter里写request.getHeader("referer");判断是否为null,如果为null就不让进入。
可以解决,但是有一个问题:如果一个连接,点击弹出一个新窗口,这个窗口就打不开了,因为这个窗口中的请求头没有referer属性。
2、在首页用window.open("login.jsp","newwindow","...,location=no");然后window.opener=window;window.self.close();打开一个没有地址栏的页面,把原页面关闭,这样是让用户无法输入了。可是这样总有点让用户不爽,用户会看到新出来一个不熟悉的东西(没有地址栏的IE窗口),原来的又关闭了,挺出乎意料的。
求:
有没有两全其美的好办法,在后台能发现这个请求是地址栏里输入的,又不会阻止正常的弹出窗口。
前提:
不可以在每个页面里往request里存参数,因为那样做工作量太大,大量的页面需要一个一个往里加。
------解决方案--------------------我觉得,对于楼主所说的用filter的解决方案就挺好,至于楼主说的弹出页面以及login页面的问题,可以在filter里做配置,即允许一些特殊的页面是没有referer的,比如首页,比如弹出窗口页等等。