[BUG反饋]發現一個bug,使用其他管理員賬號登入後,會看不到選單

發表於2019-05-11
RT,不用預設的admin登入,用新增的管理員賬號,併為此賬號新增了訪問選單的許可權後,登入成功後進入首頁是可以看到選單的,但是點選導航欄某個選單後,左側選單和導航欄選單都沒有顯示,閱讀了一下原始碼發現,在檢測選單許可權時有問題。
Auth.class.php類裡的check方法,讀取到的$authList列表是含有/admin字首的,但是該方法接收到的$name引數的列表是不含有/admin字首的,例如:
array(3) { [0]=> string(17) "admin/index/index" [1]=> string(19) "admin/appuser/index" [2]=> string(22) "admin/attendance/index" }
array(1) { [0]=> string(16) "attendance/index" }


而且檢視了兩個表,tb_auth_rule和tb_menu也發現,tb_auth_rule表裡的name是Admin字首的,而tb_menu表裡的url則沒有Admin字首。
於是乎,下面用in_array判斷來匹配時就杯具了,全部匹配不上。
if ( in_array($auth,$name) && $intersect==$param ) { //如果節點相符且url引數滿足
    $list[] = $auth ;
}


PS:當前OneThink版本號是v1.1.140726,ThinkPHP版本號是v3.2
回覆
官方的技術人員在嗎?
評論
暈,這個帖發了這麼久,居然沒有人回覆?
評論

相關文章