JSP簡單分析:使用者登入(二)
阿新 • • 發佈:2018-11-13
上文我們說到了如何設計使用者登入介面並從資料庫中進行匹配,本篇將會討論利用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來解決網頁登入的安全性問題。