ssm項目session使用及其作用域問題
這兩天由于自己在前端用到ajax發(fā)起異步更新請求,發(fā)現(xiàn)ajax會暴露后端的接口地址,這個問題當然是避免不了的啦,前端都是明文。可憐于是就在百度、谷歌、QQ群里各種查詢各種提問題,都說只能通過安全驗證去解決問題,作為新手第一個選擇的當然是session啦,網(wǎng)上還有token驗證、shrio框架等,有興趣的朋友可以網(wǎng)上搜尋教程學習。
session是存在服務器的一種緩存機制,可以驗證用戶是否已經(jīng)登錄過了。我把自己學到的寫上來,可以讓新手少走彎曲路,直接上代碼~
第一、在SSM的登錄接口參數(shù)里需要加入 HttpServletRequest request
請求,用來獲取請求攜帶的session
第二、登錄接口內代碼進行session設置,HttpSession session = request.getSession(true);
//這句是獲取session,true是表示如果沒有則新建一個session,可以不用填
session.setAttribute("logined","success");
//這句話是寫入一個標識,你也可以把登錄的賬號設置在session里面,防止發(fā)起修改請求時惡意篡改另一個帳號的資料。
第三、如何在接口驗證呢?同樣需要帶HttpServletRequest request參數(shù)請求用于獲取客戶端發(fā)起http請求所攜帶的session,HttpSession session = request.getSession(); session.getAttribute("logined")
則讀取是否有l(wèi)ogined這個key,如果沒有說明沒有登錄過,就不給請求內容,直接返回信息提醒用戶登錄。
ssm項目session作用域問題
描述:用戶登錄系統(tǒng)成功后把該用戶的相關信息放進一個session域中方便調用,并取名為xx,
當用戶登錄進入此系統(tǒng)之后要修改個人信息,修改完之后,將用戶在前臺頁面修改后的個人信息重新塞到這個session域中,覆蓋之前的session,這樣用戶當再次登錄時或者查看時就是他修改之后的信息。
分析:當用戶修改完個人信息之后想要再修改個人登錄密碼(修改個人信息和修改個人密碼不在同一頁面),此時就會提示輸入的舊密碼錯誤,因為修改個人信息的時候并沒有個人密碼,也就是在用戶修改完將自己的信息塞進session的時候,個人密碼封裝進去的就是空值了,此時就取不到用戶登錄的真正密碼。
解決辦法:若想實現(xiàn)修改完個人信息之后順利的修改個人密碼,就要在修改個人信息的頁面加上一個用戶密碼的隱藏域。這樣個人登錄密碼也會隨著用戶修改的信息封裝進對象,唄=被塞進session域中,這樣可以在修改密碼時調用session域中的內推,密碼就不會為空了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot+Redis實現(xiàn)不重復消費的隊列的示例代碼
本文主要介紹了SpringBoot+Redis實現(xiàn)不重復消費的隊列的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07解決RabbitMq消息隊列Qos?Prefetch消息堵塞問題
這篇文章主要為大家介紹了關于如何解決解決RabbitMq?Qos?Prefetch消息堵塞的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01Spring+SpringMVC+Hibernate整合實例講解
在本篇文章里小編給大家整理的是關于Spring+SpringMVC+Hibernate整合實例講解,需要的朋友們可以學習下。2020-03-03SpringMVC中Model和ModelAndView的EL表達式取值方法
下面小編就為大家分享一篇SpringMVC中Model和ModelAndView的EL表達式取值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03