JSP页面设置登录访问权限

如何限制页面必须在满足某些条件后才能访问?

比如下面这个例子:

 这是一个简单的登录界面,输入用户名和密码后,经过后台的验证,进入到相应的主界面

按照常理来说是这样的,但是我们发现,当我们直接访问主界面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");

原文地址:https://www.cnblogs.com/tanzq/p/8068393.html