1. 程式人生 > >JSP頁面設定登入訪問許可權

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>

比如我想對主介面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");