本人再接觸casbin之前,一直是使用的thinkrbac那種鑒權(quán)的方式,目前在用webman做后臺(tái)管理,在權(quán)限這塊出于好奇選擇的casbin,使用期間由于一些自身錯(cuò)誤的理解也得到了插件作者的幫助(再次感謝),在即將完成鑒權(quán)功能的時(shí)候,新的問題就出現(xiàn)了,首先用戶-角色,角色-菜單,這種設(shè)計(jì)的方式我還是按接觸casbin之前的理解做的,這樣設(shè)計(jì)會(huì)有如下幾點(diǎn)問題:
當(dāng)然以上的兩點(diǎn)問題很好解決,接下來就是登陸鑒權(quán),但是這里又產(chǎn)生了新的疑問,如果僅僅是使用casbin鑒權(quán),并不能保證認(rèn)證的可信度,因?yàn)椴藛伪砀巧矶际蔷邆錉顟B(tài)屬性的,也就是這個(gè)用戶即使casbin鑒權(quán)通過了,仍然需要做表查詢操作,以確定鑒權(quán)的準(zhǔn)確性,這樣的話就需要鑒權(quán)步驟變成兩步:
這兩步走完后,讓我這個(gè)強(qiáng)迫癥患者接受不了了,首先像tp那種rbac的鑒權(quán)方式,就是直接查表確定是否具備權(quán)限,鑒權(quán)只需1步(也就是上述的第二部),但是用的casbin后鑒權(quán)編程了兩步,同樣規(guī)則的維護(hù)上也增加了復(fù)雜度,那么casbin鑒權(quán)對(duì)應(yīng)tp rbac那種的優(yōu)勢(shì)在哪里?還是我這種設(shè)計(jì)的方式存在嚴(yán)重的問題,因?yàn)槲业乃季S停留在tp rbac那種設(shè)計(jì)方式上,強(qiáng)行結(jié)合了casbin
最后說明:首先本人不是吐槽casbin,東西幾年來一直是我做后臺(tái)權(quán)限向往的鑒權(quán)方式(之前一直用的fastadmin,沒條件用這個(gè)),目前還是懷疑我設(shè)計(jì)的方式存在問題,希望好心人能給些建議,目前本人很痛苦(強(qiáng)迫癥的痛苦)....
Casbin 是什么?
Casbin 可以:
支持自定義請(qǐng)求的格式,默認(rèn)的請(qǐng)求格式為{subject, object, action}。
具有訪問控制模型model和策略policy兩個(gè)核心概念。
支持RBAC中的多層角色繼承,不止主體可以有角色,資源也可以具有角色。
支持內(nèi)置的超級(jí)用戶 例如:root 或 administrator。超級(jí)用戶可以執(zhí)行任何操作而無需顯式的權(quán)限聲明。
支持多種內(nèi)置的操作符,如 keyMatch,方便對(duì)路徑式的資源進(jìn)行管理,如 /foo/bar 可以映射到 /foo*
Casbin 不能:
身份認(rèn)證 authentication(即驗(yàn)證用戶的用戶名和密碼),Casbin 只負(fù)責(zé)訪問控制。應(yīng)該有其他專門的組件負(fù)責(zé)身份認(rèn)證,然后由 Casbin 進(jìn)行訪問控制,二者是相互配合的關(guān)系。
管理用戶列表或角色列表。 Casbin 認(rèn)為由項(xiàng)目自身來管理用戶、角色列表更為合適, 用戶通常有他們的密碼,但是 Casbin 的設(shè)計(jì)思想并不是把它作為一個(gè)存儲(chǔ)密碼的容器。 而是存儲(chǔ)RBAC方案中用戶和角色之間的映射關(guān)系。
你可以認(rèn)為Casbin是RBAC的超集
那是你設(shè)計(jì)不合理啦!看一參考下面的哦
認(rèn)證&授權(quán)流程
RBAC 參考
我迷糊過來了 這么強(qiáng)大的casbin不適合小后臺(tái)用,小后臺(tái)還是要遵循大道至簡(jiǎn)的原則,casbin做大型系統(tǒng)的
感覺像他這種討論性質(zhì)比較多的,不用模板也行,但是像這個(gè)
http://wtbis.cn/q/7996
我覺得確實(shí)有模板會(huì)好點(diǎn)