rbac 許可權認證.
一種使用者登入後,不可能是每次請求都查詢一次資料庫.
1.是不是把他擁有許可權的介面地址,全部取出,然後儲存到 session 中?
2.在 laravel 中,有的介面需要認證,有的介面是開放的,我現在路由是這樣,有沒有更優雅的方式實現?
Route::group(['prefix' => 'api/v1'],function(){ Route::post('login',"AccountController@Login"); Route::group(['middleware'=>'auth'],function(){ Route::get("paper","PaperController@Index"); });});
3.rbac 中節點表是這麼存放的
大的節點下有具體的介面地址,這樣合適嗎?你們是這麼儲存的嗎?
每次新增介面都要更新表資料.有沒有其他更優雅的實現方式.
回複內容:
rbac 許可權認證.
一種使用者登入後,不可能是每次請求都查詢一次資料庫.
1.是不是把他擁有許可權的介面地址,全部取出,然後儲存到 session 中?
2.在 laravel 中,有的介面需要認證,有的介面是開放的,我現在路由是這樣,有沒有更優雅的方式實現?
Route::group(['prefix' => 'api/v1'],function(){ Route::post('login',"AccountController@Login"); Route::group(['middleware'=>'auth'],function(){ Route::get("paper","PaperController@Index"); });});
3.rbac 中節點表是這麼存放的
大的節點下有具體的介面地址,這樣合適嗎?你們是這麼儲存的嗎?
每次新增介面都要更新表資料.有沒有其他更優雅的實現方式.
請先 登入 後評論
預設排序 時間排序
1 個回答
答案對人有協助,有參考價值 1 答案沒協助,是錯誤的答案,答非所問
1- 存在session裡面是必然的,所以修改許可權後對應的使用者需要重新登陸
2- 沒仔細研究過laravel的rbac,不過用中介軟體看起來已經挺不錯了,當然你也可以考慮不在路由的時候進行驗證,而是最後分發完成的時候再驗證(比如在構造controller的時候驗證,當然這要求path是controller/action結構而不是路由地址)
3- 資料結構上滿足需求就好,但是你這個有瑕疵,要不都用/開頭,要不就都不要/開頭。至於每次新增介面都要更新資料表是必然的,專門寫個功能自動同步就行了。你中的資料明顯有問題,id=25的資料pid不應該是4吧。
補充,該設計的另一個缺點就是沒有定義頂級許可權,這樣管理起來會更麻煩。通常我們會定義一個頂級許可權,其他的許可權都是它的直接/間接子節點,這樣admin使用者只要具有了頂級許可權就ok了,不會受到介面資料更新的影響。