iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
自我挑戰組

保健食品建議量查詢網頁功能系列 第 22

底層建置,寫好一次可以用很久

  • 分享至 

  • xImage
  •  

開發新的springboot 專案,一開始建程式專案時,除非有舊的專案code很類似可以抄很多,不然我還是習慣用 https://start.spring.io/ 開始。使用新的版號,確認一下引用的 Dependencies,其實相對不會很花時間,還可以看看他現在有推什麼新的整合Lib出來可以用也是不錯。不過如果是第三版號.0,M幾的那種,要多看幾眼,通常在這種剛升小版號,可能會有第三方支援的升版還沒有跟上,不過重點還是看,已確定要使用的有支援就可以。

配最新的版號我覺得很重要,因為許多已知有名的重大資安修復(ex: log4shell、spring4shell),springboot 都會出新版更正,現在不升,盤查時還是要乖乖升,趁開發中就確認dependencies,method運用有沒有衝突還是比較好的。

透過 spring starter把基本的pom.xml 專案建好後,就可以從舊專案搬需要的code進來放,看他compile有沒有順利。不過當然如果大版號不一樣的話,就要很有心理準備看到很多紅叉叉了QQ。

而Spring Security 應該是負責程式底層的人,第一個要設計跟實作的部份,我通常是用到這到以下的部份:

  • Web Security

    • 處理網址pattern 存取限制
    • 設定 cors(跨來源資源共用Cross-origin resource sharing, CORS)
    • 設定 csrf (跨站請求偽造Cross-site request forgery,CSRF,wiki:https://zh.wikipedia.org/zh-tw/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0 , mozilla:https://developer.mozilla.org/zh-TW/docs/Glossary/CSRF)
    • 登入/登出設定處理方式
    • 記得要設定登入密碼的加密方式: passwordEncoder() 。這年頭密碼明碼放在資料庫就顯得有點不專業了。
  • Method Security

    • 通常用於處理頁面/API 功能的存取權限,會跟登入者權限有關
    • 通常用 @PreAuthorize("hasAnyAuthority(xxx)") 的方式撰寫,登入者的權限通通塞到 UserDetails 內的 authorities 讓他扁平化
    • 權限判別通常要自己寫程式客制化

搞定Security 後,還有通用的 i18n MessageSource,簡單設定驗證一下,就差不多了。

別忘了還有error page的設定,至少404、401、403、500這幾個常見的,設定好,別用預設的,才不會像學生練習作業網站。

另外還有常用的 Interceptor,有規劃好的話,也可以處理不少項目,例如多國語言切換,輸入內容injection,有的人會把權限控管/加工做在這一層也可以…,讓後續的內容開發,可以更專注在商業邏輯的實作。

通常一個大版號,有參與過開發,至少就留一份底層設定當參考,因為有用身體記住的部份,回找還是比Google快,而且成功率也比較高。然後有興趣可以再多研究,把底層多了解一點,或是改得更好用/通用,對之後還是有幫助的。

不過隨著年資往上長,寫code的時間相對比較少,而且只剩複雜或是難的要寫Orz…簡單的都給菜鳥或新鮮人練習去了,基於有經驗,年紀大的成見?!,也不好意思寫太爛,而且菜鳥真的比較愛問,被問倒的話,也覺得有點遜就是。雖然寫得項目不多,但有時間的話,其實還會比較認真去了解多一點運作原理,以前都會Google 問 sample code,現在都還會再多問一下作法比較,看一下大家的討論優缺點。

碎碎念這麼多,這次都用不到XD…簡易查詢系統就是輕鬆愉快!


上一篇
規範要一起遵守才有用,太理想化做不到也是白搭
下一篇
進化的物件概念,越來越囉唆
系列文
保健食品建議量查詢網頁功能30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言