当前位置:   article > 正文

thinkphp中RBAC示例中登录没有权限的问题_thinkphp抱歉,需要登录获取访问权限!

thinkphp抱歉,需要登录获取访问权限!

今天从thinkphp官网下载RBAC示例,准备移植我做的项目中。

但是移植完之后,发现只有admin可以登陆,其他用户登陆提示没有权限。

从RBAC.class.php中看到

  1. static public function AccessDecision($appName=APP_NAME) {
  2. //检查是否需要认证
  3. if(RBAC::checkAccess()) {
  4. //存在认证识别号,则进行进一步的访问决策
  5. $accessGuid = md5($appName.MODULE_NAME.ACTION_NAME);
  6. if(empty($_SESSION[C('ADMIN_AUTH_KEY')])) {
  7. if(C('USER_AUTH_TYPE')==2) {
  8. //加强验证和即时验证模式 更加安全 后台权限修改可以即时生效
  9. //通过数据库进行访问检查
  10. $accessList = RBAC::getAccessList($_SESSION[C('USER_AUTH_KEY')]);
  11. }else {
  12. // 如果是管理员或者当前操作已经认证过,无需再次认证
  13. if( $_SESSION[$accessGuid]) {
  14. return true;
  15. }
  16. //登录验证模式,比较登录后保存的权限访问列表
  17. $accessList = $_SESSION['_ACCESS_LIST'];
  18. }
  19. //判断是否为组件化模式,如果是,验证其全模块名
  20. $module = defined('P_MODULE_NAME')? P_MODULE_NAME : MODULE_NAME;
  21. if(!isset($accessList[strtoupper($appName)][strtoupper($module)][strtoupper(ACTION_NAME)])) {
  22. $_SESSION[$accessGuid] = false;
  23. return false;
  24. }
  25. else {
  26. $_SESSION[$accessGuid] = true;
  27. }
  28. }else{
  29. //管理员无需认证
  30. return true;
  31. }
  32. }
  33. return true;
  34. }

 发现要用到APP_NAME,而我的项目名为App。而从数据库中get的名称为Rbac。

所以只要把think_node中name字段为Rbac改为App,就可以了。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/181812
推荐阅读
  

闽ICP备14008679号