這兩天由于自己在前端用到ajax發起異步更新請求,發現ajax會暴露后端的接口地址,這個問題當然是避免不了的啦,前端都是明文。可憐于是就在百度、谷歌、QQ群里各種查詢各種提問題,都說只能通過安全驗證去解決問題,作為新手第一個選擇的當然是session啦,網上還有token驗證、shrio框架等,有興趣的朋友可以網上搜尋教程學習。
session是存在服務器的一種緩存機制,可以驗證用戶是否已經登錄過了。我把自己學到的寫上來,可以讓新手少走彎曲路,直接上代碼~
第一、在SSM的登錄接口參數里需要加入 HttpServletRequest request
請求,用來獲取請求攜帶的session
第二、登錄接口內代碼進行session設置,HttpSession session = request.getSession(true);
//這句是獲取session,true是表示如果沒有則新建一個session,可以不用填
session.setAttribute("logined","success");
//這句話是寫入一個標識,你也可以把登錄的賬號設置在session里面,防止發起修改請求時惡意篡改另一個帳號的資料。
第三、如何在接口驗證呢?同樣需要帶HttpServletRequest request參數請求用于獲取客戶端發起http請求所攜帶的session,HttpSession session = request.getSession(); session.getAttribute("logined")
則讀取是否有logined這個key,如果沒有說明沒有登錄過,就不給請求內容,直接返回信息提醒用戶登錄。
描述:用戶登錄系統成功后把該用戶的相關信息放進一個session域中方便調用,并取名為xx,
當用戶登錄進入此系統之后要修改個人信息,修改完之后,將用戶在前臺頁面修改后的個人信息重新塞到這個session域中,覆蓋之前的session,這樣用戶當再次登錄時或者查看時就是他修改之后的信息。
分析:當用戶修改完個人信息之后想要再修改個人登錄密碼(修改個人信息和修改個人密碼不在同一頁面),此時就會提示輸入的舊密碼錯誤,因為修改個人信息的時候并沒有個人密碼,也就是在用戶修改完將自己的信息塞進session的時候,個人密碼封裝進去的就是空值了,此時就取不到用戶登錄的真正密碼。
解決辦法:若想實現修改完個人信息之后順利的修改個人密碼,就要在修改個人信息的頁面加上一個用戶密碼的隱藏域。這樣個人登錄密碼也會隨著用戶修改的信息封裝進對象,唄=被塞進session域中,這樣可以在修改密碼時調用session域中的內推,密碼就不會為空了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/wangmy3028/article/details/79563656