有兩個函數,假設讓我們實作,那麼怎樣處理異常情況呢?
Roles.AddUserToRole(user, role); 在user已經是role的情況下應當怎樣?
Roles.RemoveUserFromRole(user, role); 在user已經不是role的情況下應當怎樣?
以前遇到過這類情況,在這兩種情況下都會自然放行,因為目的已經達到了,為何要考慮以往的情況呢?但實際上這兩個函數都是asp.net中自帶的函數,且分别會傳回兩個exception。
從技術實作的角度看,這樣非常多餘,但從應用的角度看,越想越有道理。
假設這是一個應用系統,現在底層代碼收到了一個指令為一個使用者授權或解授權,而此人已經被授權或解授權,極有可能表明在判斷邏輯上出了問題,并進而導緻在View上顯示的授權情況有誤,并是以生成了本不該有的操作連結(本人用的是MVC,連結即操作)。這件事情有必要提醒使用者:你看到的表象和實際情況有差異!而不是簡單地從技術上解決了之,否則其他地方必定也存在什麼錯誤的授權情況。
本文轉自火星人陳勇 51CTO部落格,原文連結:http://blog.51cto.com/cheny/1100125