如何限制页面必须在满足某些条件后才能访问?
比如下面这个例子:
这是一个简单的登录界面,输入用户名和密码后,经过后台的验证,进入到相应的主界面
按照常理来说是这样的,但是我们发现,当我们直接访问主界面main.jsp时,却也可以直接进入到主界面,比如:(注意URL)
这就对系统造成了很大的安全隐患
怎么限制主界面必须在登录之后才能访问呢?其实也很简单
首先,我们在后台验证用户正确登录之后,跳转到相应页面之前,加入下面这行代码
if (userService.valiUser(user)) {
session.setAttribute("user", user);
当用户验证成功,使用setAttribute方法讲用户名以实例user存放在会话之中。
然后我们新建一个islogin.jsp页面,这个页面不用做显示,专门用于验证访问权限,如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import = "com.jkxy.service.userService" %>
<%@ page import = "com.jkxy.model.userTable" %>
<%
userTable user = (userTable)session.getAttribute("user"); if(user ==null) {
%>
<jsp:forward page="index.jsp"></jsp:forward>
<%
}
%>
从会话中取出user实例,如果user实例存在,说明该页面之前已经验证过登录用户。如果不存在,那么就直接跳转到登录界面。
然后你在你想要添加登录访问权限的页面jsp代码中相应位置插入代码
<jsp:include page="islogin.jsp"></jsp:include>
这样的话,当我们直接使用url访问main.jsp界面就不好使了
还需要注意的是,在退出时需要清除用户痕迹,不然session中会一直存储user实例,所以在退出时还需要有以下动作:
session.removeAttribute("user");