鍍金池/ 問答/PHP  數(shù)據(jù)庫(kù)/ 添加權(quán)限的問題?

添加權(quán)限的問題?

以前做過(guò)權(quán)限是寫死的,最近想了解一下可以添加權(quán)限的這個(gè)功能。
想問一下權(quán)限可以添加的問題。

  • 比如說(shuō),網(wǎng)站一開始的權(quán)限初始化好了,使用過(guò)程中,管理員添加了一個(gè) 編輯文章的 權(quán)限,這時(shí)候擁有這個(gè)權(quán)限才可以編輯文章,但是代碼是一開始就寫好的,開發(fā)者不可能想到管理員添加這個(gè)權(quán)限,那么這個(gè)新添加的權(quán)限有什么用呢?
  • 還是我理解錯(cuò)了,可以動(dòng)態(tài)添加權(quán)限并不是這么一回事?望解疑。 謝謝。
回答
編輯回答
逗婦乳
  1. 將需要/可能需要權(quán)限控制的路由存入數(shù)據(jù)庫(kù)路由表中(路由需要指定name)
  2. 為用戶/角色分配路由權(quán)限
  3. 添加路由權(quán)限驗(yàn)證中間件
    a. 檢查路由是否存在于路由表中
    b. 存在則獲取當(dāng)前登錄用戶/角色是否有該路由權(quán)限(有則$next,無(wú)則響應(yīng)無(wú)權(quán)限提示)
    c. 不存在直接$next($req)

當(dāng)需要添加文章編輯權(quán)限時(shí):

  1. 插入數(shù)據(jù)到路由表(post.edit)
  2. 為用戶分配路由post.edit

https://github.com/Sydney710/...

2017年9月7日 05:21
編輯回答
不討喜

你理解 錯(cuò)了。如果一開始代碼里沒判斷 ,那添加權(quán)限 沒半毛錢的用。

添加權(quán)限 ,判斷權(quán)限 要一起才有用。

2018年2月21日 17:28
編輯回答
逗婦惱

權(quán)限添加的方式有很多,直接寫在業(yè)務(wù)代碼里面的權(quán)限判斷是最簡(jiǎn)單明了的一種,但是會(huì)給開發(fā)造成負(fù)擔(dān),維護(hù)起來(lái)也不方便,就比如遇到題主描述里面的問題,基本只能交給開發(fā)來(lái)改。

我比較常用的權(quán)限控制,是寫一個(gè)中間件,或者控制器的構(gòu)造函數(shù)里,使用某些固定的格式來(lái)直接進(jìn)行權(quán)限管理。舉個(gè)例子:
通常我們的控制器的命名是有規(guī)則的,xxxController
權(quán)限的格式是:控制器名 + 方法名
比如 文章相關(guān)的控制器: ArticleController 里面有個(gè)編輯的函數(shù):edit

那么 編輯文章的權(quán)限名就是字符串: ‘a(chǎn)rticlecontroller@edit’

某個(gè)請(qǐng)求到來(lái)的時(shí)候,在中間件或者構(gòu)造函數(shù)中,判斷這個(gè)用戶是否有相應(yīng)的權(quán)限。如果沒有,則中斷函數(shù),進(jìn)行異常處理。如果有,則繼續(xù)執(zhí)行代碼。

2017年6月5日 14:26