JSP頁面設定登入訪問許可權
阿新 • • 發佈:2019-01-22
如何限制頁面必須在滿足某些條件後才能訪問?
比如下面這個例子:
這是一個簡單的登入介面,輸入使用者名稱和密碼後,經過後臺的驗證,進入到相應的主介面
按照常理來說是這樣的,但是我們發現,當我們直接訪問主介面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");