1. 程式人生 > >JSP簡單分析:使用者登入(二)

JSP簡單分析:使用者登入(二)

    上文我們說到了如何設計使用者登入介面並從資料庫中進行匹配,本篇將會討論利用session保證網站或系統的安全性。上文雖然做到了可以使用使用者密碼登入,但是遺留下來兩個問題:1)如果使用者知道網頁的路徑直接繞過登入介面怎麼辦?2)怎麼退出登入保證使用者密碼的安全性?

    為解決上述的問題,首先先來設計幾個頁面。

一、設計系統的各個頁面

一般的管理系統介面通常會有錄入、檢視、修改、刪除的功能。我們也以此設計,新建這個4個介面。這4個介面一般以菜單鏈接的形式分佈在主頁上,所以我們一般使用frameset來設計介面。

index.jsp

<frameset rows="20%,*">//分為上下兩個介面
	<frameset src="top.jsp">
	<frameset columns="30,*">//分為左右兩個介面
		<frameset src="main_left.jsp">
		<frameset src="main_right.jsp" nam="main_right">//name可指定框架,與target相互使用
	</frameset>
</frameset>

main_left.jsp

<a href="input.jsp" target="main_right">錄入資訊
<a href="display.jsp" target="main_right">查詢資訊
<a href="modify.jsp" target="main_right">修改資訊
<a href="delete.jsp" target="main_right">刪除資訊
<a href="exit.jsp" target="main_right">退出

如何我們才能避免使用者繞過登入介面直接到這些介面呢,就需要session來儲存使用者名稱和密碼了。

二、利用session保證網頁安全性

還記得上次我們說到驗證使用者名稱和密碼的varify.jsp,修改該介面:登入成功就跳轉主頁,並將使用者名稱和密碼儲存在session中;如果不成功就回到登入頁面。

varify.jsp

<jsp:useBean id="user" class="com.test.model.userTable"></jsp:useBean>//id表示useBean的唯一標識,class表示bean的路徑
<jsp:useBean id="userservice" class="com.test.service.UserService"></jsp:useBean>
<jsp:setProperty property="*" name="user">//*表示傳遞的所有引數,name是複製的javaBean
<%//處理邏輯
	if(userservice.verify(user)){
		session.setAttribute("user",user);//將使用者名稱密碼儲存在session中
		%><jsp:forward page="index.jsp"></jsp:forward>;	//成功之後跳轉主頁
	<%}else{
		<jsp:forward page="login.jsp"></jsp:forward>;//否則返回登入介面
	}
%>

接著我們再寫一個isLogin.jsp頁面,這個頁面是用來判斷是否登入的。再每個原本每個需要登入的頁面中使用<jsp:include>這個指令包含這個頁面,就可以避免使用者跳過登入頁面訪問其他頁面的問題了。

isLogin.jsp

<%	
	UserTable user=(UserTable)session.getAttribute("user");
	if(user==null){
	%>
	<jsp:forword page="login.jsp">
	<%
	}
%>

然後在每個頁面的head部分可以寫

<jsp:include page="isLogin.jsp">

即可保證登入安全性問題。

三、退出登入

想要刪除儲存在session中的使用者資訊,只要使用removeAttribute()方法即可。

exit.jsp

<%
	session.removeAttribute("user");
%>
<jsp:forward page="login.jsp">
小結:主要是利用session來解決網頁登入的安全性問題。