最近在學習springboot的乙個秒殺專案。那個老師講的乙個思想我印象特別深,這裡就直奔主題了。
大家都知道,我們平常如果練習ssm或者springboot框架,大部分目的是純粹為了把專案搭建起來並且能夠執行和在頁面上展現資料。但是我們往往忽略了乙個很重要的事情,就是資料的傳輸和安全性。
舉個例子,這裡列出乙個表user_info
想一想,假設我們的分層就是domain,dao,service,controller層,並假設你的物件是user user。那麼回憶一下,你是否**將這個user始終貫穿在整個專案中呢?**說白了,你在dao層,service層,controller層上的user物件的屬性可能是一模一樣的。
舉個例子:用springboot
實現乙個簡單的使用者登入操作。那麼你竟然要登入,是不是要獲得使用者的使用者名稱和密碼呢?那你登入了以後,是不要展現使用者的其他資訊?比如使用者位址,**號碼等等。那麼問題來了:即使你頁面只想展現除了使用者重要資訊意外的資料,那麼你**裡面的user物件,是不是依舊有password這一類的重要資訊?那麼是不是有一些黑客可以從你的url根據你傳的id進行資訊盜取?(無論他們是否能夠實現,這整個**框架就很危險,讓使用者的重要資訊暴露了)。那麼如何解決?實現主體類的乙個分離
比如說domain層:
在dao層我們可以分別獲取user_info和user_password兩張表的資訊
那麼在service我們將它拼接在一起,形成乙個新的實體類物件
而我們的service呼叫的物件是usermodel,其中包含了最底層兩個實體類的資訊。具體操作:
private usermodel convertfromdataobject(userdo userdo, userpassworddo userpassworddo)
usermodel usermodel = new usermodel();
beanutils.copyproperties(userdo,usermodel);
if(userpassworddo!=null)
return usermodel;
}
那麼在controller層:
假設我們已經登入完了,要開始展示資訊了,那麼為了徹底保證資料的安全性,我們可以這樣
這個viewobject下面放的物件是用來檢視(也就是web頁面)上進行渲染的。
這裡是uservo,他只儲存了一些基礎的資訊,不包含使用者的密碼。
那麼我們controller類就直接對他進行呼叫即可。同樣,屬性的賦值可以使用beanutils.copyproperties
文章寫得可能有點雜,總的意思就是說不要整個專案都使用同乙個物件
(這裡的同乙個指的是物件包含的屬性都是一樣的)
可以在各個層根據業務的需要適當的進行分類,就好像本文裡的一樣:
service:我需要密碼及其基本資訊相對應,那麼我需要構造乙個實體類,包含所有資訊
controller:我需要在web頁面顯示使用者的資訊(除password之外,或者一些用於判斷的許可權資訊等等),那麼我就構造乙個實體類,純粹用於頁面渲染。
寫這個文章的目的,也就是希望大家以後進公司實習也好工作也好,有這個意識,多留個心眼,不然或許會造成一定的資料洩露(無論是否可能),對公司造成利益上的損失。
玩遊戲中體會到的平衡
過了三十歲後,開始關注各種平衡的東西。時間用於工作與生活的平衡,程式設計複雜與簡單的平衡,獨自承擔與團隊協作的平衡。一直感覺平衡不容易把握,好像總在兩個極點左右搖擺,直到這兩天玩手機遊戲時突然有所感悟。遊戲是消除螢幕上橫平堅直堆著的許多小球,它們由五種顏色組成,每兩個相同顏色在一起就可以消掉,相同顏...
在學習前端過程中的小分享
使用vs code時的一些小分享 工作區快捷鍵 win快捷鍵 作用 ctrl shift p f1 顯示命令版 ctrl b 顯示 隱藏側邊欄 ctrl 建立多個編輯器 ctrl 將介面放大 縮小 ctrl j 顯示 隱藏控制台 方向鍵 在單個字母間移動游標 ctrl 在單詞間移動游標 fn 在整行...
我在學習PS過程中有幾點很深的體會
其實對ps早有耳聞,只是一直沒去接觸,因為覺得挺專業的,然後也沒有遇見一定要用ps的地方,自己也一直挺滿足於美圖秀秀的,後來因為部門需要不得不接觸ps,外加正好電協在做這個的培訓,於是毫不猶豫的去了ps培訓組。我在學習過程中,有幾點很深的體會 一 自學真的是很重要的能力 ps其實大部分都要靠我自己自...