chrome为什么可以直接越过filter过滤指定页面访问页面

4597被浏览158989分享邀请回答/web/tools/chrome-devtools/93518 条评论分享收藏感谢收起67737 条评论分享收藏感谢收起查看更多回答怎么阻止直接输入地址访问 html 页面 - CSDN博客
怎么阻止直接输入地址访问 html 页面
方法大致归纳为:
1:如果想隐藏page,则把你的&页面&放到&web-inf下。
2:使用session 来认证,单纯的HTML不好验证!具体来说就是在第一个JSP页面里面传一个Session,每个页面检验Session的值,根据Session的值重定向,
这个实施的前提是要使用过滤器来拦截页面,可以用struts2和Filter技术等。由以下两步完成该功能:1) 配置被拦截的页面,2)从java代码中进行session控制。
下面的这个例子是使用Filter来实施的,至于如何用struts2来处理拦截的jsp页面,跟这个类似的步骤,百度一下就知道了。
Java中应用Filter对权限和Session控制
代码如下:
package com.drp.util.
import java.io.IOE
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
public class AuthFilter implements Filter
public void destroy() {}
public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse,FilterChain filterChain) throws IOException,
ServletException
HttpServletRequest request = (HttpServletRequest)servletR
HttpServletResponse response = (HttpServletResponse)servletR
String currentURL = request.getRequestURI();
//取得根目录所对应的绝对路径:
String targetURL = currentURL.substring(currentURL.indexOf(&/&, 1), currentURL.length());
//截取到当前文件名用于比较
HttpSession session = request.getSession(false);
if (!&/login.jsp&.equals(targetURL))
{//判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环
if (session == null || session.getAttribute(&user&) == null) {
//*用户登录以后需手动添加session
System.out.println(&request.getContextPath()=& + request.getContextPath());
response.sendRedirect(request.getContextPath() + &/login.jsp&);
//加入filter链继续向下执行
filterChain.doFilter(request, response);
public void init(FilterConfig filterConfig) throws ServletException {}
用Filter防止用户访问一些未被授权的资源,比如一个用户未登录就不允许访问网站的某些页面,并将页面重定向到需要用户登录的页面,相关例子:
在配置文件web.xml里添加:
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.drp.util.filter.AuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
//表示对所有jsp文件有效
</filter-mapping>
这样用户没有登录的情况下就会转到登录页面 &
本文已收录于以下专栏:
相关文章推荐
把如下代码加入到区域中
  netscape = (navigator.appName.indexOf(&Netscape&) != -1);
  version4 = (navi...
对于Struts2、Spring3、Hibernate3集成使用的项目来说,对用户请求的控制是非常重要的,有些操作需要用户登录后才能执行。如果不做任何限制,则action可以直接在浏览器中输入acti...
一般来说,只有服务器端的CGI程序(ASP、PHP、JSP)具有session会话功能,用来保存用户在网站期间(会话)的活动数据信息,而对于数量众多的静态页面(HTML)来说,只能使用客户端的cook...
这是个过滤器的内容,
public void doFilter(ServletRequest request, ServletResponse response, 
   ...
主题:使用Filter技术防止用户非法访问页面作者:蔡毅时间:一 Filter概述Filter 技术是servlet 2.3 新增加的功能,它新增加的功能包括: 1. 应用程序生命周期...
HTTP由两部分组成:请求和响应。当你在Web浏览器中输入一个URL时,浏览器将根据你的要求创建并发送请求,该请求包含所输入的URL以及一些与浏览器本身相关的信息。当服务器收到这个请求时将返回一个响应...
最近项目中比较喜欢在前端用html,这样直接把页面贴进去方便好多,并且html响应也比较快,但是对于html权限这块,应用拦截器可以很简单的实现。
       直接贴代码
public clas...
修改document.domain的注意事项
  有时候,需要修改document.domain。
  典型的情形:/A.htm 的主页面有一个,两个页面的js如何...
纯静态html页面,如何拦截请求url的后缀不是.html的访问地址
你不要被标题给骗了,你如果想法是“如何拦截url”,那你就想错了,因为html页面是无法拦截那些后缀名不是.html的url的...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)4597被浏览158989分享邀请回答173 条评论分享收藏感谢收起237 条评论分享收藏感谢收起查看更多回答javaWeb项目用过滤器filter实现登陆成功后才能访问主页面,否则直接输入主页面的地址自动跳转到登陆界面 - CSDN博客
javaWeb项目用过滤器filter实现登陆成功后才能访问主页面,否则直接输入主页面的地址自动跳转到登陆界面
想用Filter实现一个登陆验证的功能,实现登陆成功后才能访问主页面,否则直接输入主页面的地址会自动跳转到登陆界面
原理很简单,每次登陆成功后,创建一个session域对象,将登陆成功的用户名保存在session中,过滤器要做的就是在每一次跳转到jsp页面的请求时会进行过滤(因此在web.xml中要写 &url-pattern&*.jsp&/url-pattern&),然后过滤器会对要跳转网页的地址进行分析,如果不是login.jsp(登录页面)页面的话就判断session中有没有值,如果有值,说明用户已经登陆,如果为null说明用户没登陆,然后将地址重定向到login.jsp(登录页面)页面,大致就这样。
当然,这只是简单的实现这个功能而已,其实也可以扩展的,利用监听器,写一个当前在线的所有用户,保存在ServletContext域中的list集合中,同样也存一个int类型,用于记录访问量,同时,也可以实现保证用户单进单出(不能同时登陆,退出时从在线用户中移除),这些更能也不难,有时间的话我在写一写。
代码中很多地方用的System在控制台输出的,并没有提示到页面(因为太懒)
如果你细心的话,你会发现在get和post方法中我并没有对中文乱码进行处理,因为我直接写了一个过滤器。
下面是部分代码:
UserServlet代码如下:
package com.gpf.
import java.io.IOE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
import com.gpf.model.U
import com.gpf.service.UserS
import com.gpf.serviceImpl.UserServiceI
* 朝九晚十
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
UserService service = new UserServiceImpl();
User user = null;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String type = request.getParameter("type");
if("exit".equals(type)){
HttpSession session = request.getSession(false);
String sessionUser = (String) session.getAttribute("user");
if(sessionUser!=null){
session.removeAttribute("user");
System.out.println("退出成功!");
System.out.println("退出失败,用户已经退出登录!");
request.getRequestDispatcher("index.jsp").forward(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String type = request.getParameter("type");
if("login".equals(type)){
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
user = service.login(userName);
if(user!=null){
if(user.getUserPwd().equals(userPwd)){
HttpSession session = request.getSession();
session.setAttribute("user", userName);
request.getRequestDispatcher("index.jsp").forward(request, response);
System.out.println("密码部不正确!");
request.setAttribute("userName", userName);
request.setAttribute("message", "输入密码错误!请重新输入!");
request.getRequestDispatcher("login.jsp").forward(request, response);
System.out.println("用户名不存在!");
过滤器代码如下:
package com.gpf.
import java.io.IOE
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
* 过滤器(拦截器),查看用户是否登陆过,未登录禁止访问页面
* 朝九晚十
public class AuthFilter implements Filter {
public void destroy() {
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletR
HttpServletResponse response = (HttpServletResponse) servletR
String currentURL = request.getRequestURI();
String targetURL = currentURL.substring(currentURL.indexOf("/",1),currentURL.length());
HttpSession session = request.getSession(false);
if(!"/login.jsp".equals(targetURL)){
if(session==null||session.getAttribute("user")==null){
response.sendRedirect(request.getContextPath()+"/login.jsp");
chain.doFilter(request, response);
public void init(FilterConfig arg0) throws ServletException {
在web.xml中添加如下代码:
&AuthFilter&
&com.gpf.util.AuthFilter&
&AuthFilter&
本文已收录于以下专栏:
相关文章推荐
1.数据库设计
create database userDB
default charset=utf8;
use userDB;
create table user (
id int(20...
Spring MVC + mybatis实现的注册登录
前期准备:
           如下图所示,准备好所需要的包,
新建工程,导入所需要的包,在web.xml中配置好所需要的,如下,
实现Spring MVC的入门,在登陆界面填写用户名和密码,提交后获取用户名和密码跳转到另一个页面
一、新建一个JAVA WEB项目,并导入Spring的相关JAR包,并在web.xml中声明拦截器...
  SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等;
   public class HanderIn...
需要用拦截器,先写一个拦截器的工具类!
package rihong.send.
import java.io.IOE
import javax.servlet.Fil...
这是个过滤器的内容,
public void doFilter(ServletRequest request, ServletResponse response, 
   ...
过滤器Servlet类:
有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机)。实现这个功能关键就是服务端要识别客户的身份。而用Cookie...
在之前的博文中介绍了项目中防止用户重复登录的方案及解决非法退出异常的处理方法——监听浏览器关闭事件onbeforeunload,发送ajax请求到服务器端执行正常退出程序,以避免用户被锁死的情况。然后...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 filter 跳转页面 的文章

 

随机推荐