JSP页面设置登录访问权限

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014616233/article/details/52471135

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

比如下面这个例子:

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

这里写图片描述

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

比如我想对主界面main.jsp设置登录访问权限

</head>
<jsp:include page="islogin.jsp"></jsp:include>
<frameset rows="20%,*">
    <frame src="top.jsp">
    <frameset cols="20%,*">
        <frame src="main_left.jsp">
        <frame src="main_right.jsp" name=main_right>
    </frameset>
</frameset>
<body>

这样的话,当我们直接使用url访问main.jsp界面就不好使了

这里写图片描述

还需要注意的是,在退出时需要清除用户痕迹,不然session中会一直存储user实例,所以在退出时还需要有以下动作

session.removeAttribute("user");

教学来自于极客学院
极客学院视频教学

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页