Вход в систему и выход из системы с правами администратора высшего уровня и администраторов более низкого уровня конфликтуют между собой, так что администратор нижнего уровня может видеть бэкенд администратора высшего уровня при входе в систему. - PullRequest
0 голосов
/ 21 мая 2019

В моем программном обеспечении есть Super Admin и несколько администраторов нижнего уровня. Есть также Customers_list (все клиенты) для Super Admin. Также есть список customer_list для каждого администратора нижнего уровня, который сортируется по списку клиентов Super Admin.

Когда вы входите и выходите из системы как Super Admin, это работает хорошо. Тогда вы идете дальше и входите в систему как администратор нижнего уровня. После того, как вы щелкнете по Списку администраторов нижнего уровня, система войдет в систему как Супер Администратор и покажет бэкэнд Супер Администратора для просмотра администратору нижнего уровня. Я не понимаю, как происходит вход в систему Super Admin, будь то из кэша браузера, файлов cookie или незакрытого сеанса.

Когда вы обновляете браузер, бэкэнд Super Admin исчезает, и теперь отображается бэкэнд администратора нижнего уровня, который должен был отображаться ранее при входе в систему. Для администратора нижнего уровня очень рискованно иметь доступ к бэкенду Супер-администратора таким образом.

Обычно я вхожу в систему с правами администратора высшего уровня и администраторов нижнего уровня по одному и тому же URL-адресу https://www.websitename/admin, и я назвал список клиентов для администратора высшего уровня и администратора нижнего уровня «Customers_list». Я пытался управлять кэш-памятью и файлами cookie, но до сих пор не нашел решения, и не могу найти ошибку в своем коде. У меня никогда не было такого рода проблем с cakephp-2.x

Когда вы используете разные браузеры для Super Admin и Another Browser для администраторов нижнего уровня, вы никогда не заметите эту проблему. Это происходит, когда вы тестируете его в одном и том же браузере, будь то на разных вкладках или на одной вкладке.

#UserController

 <?php

 //login 

public function admin_login() {
            $this->layout='login';      
            $user_inf = $this->Session->read('Auth.User');
         if(!empty($user_inf)){             

            if($user_inf['role_id'] <= 2){
               $this->redirect(array('controller'=>'Users','action'=>'dashboard','admin'=>true));  
                die();
            }elseif($user_inf['role_id']==5){
                 $this->redirect(array('controller'=>'Users','action'=>'dashboard','admin'=>true));  
                die();

            }else{
              $this->Session->setFlash('<div class="alert alert-danger alert-dismissable"><button class="close" aria-hidden="true" data-dismiss="alert" type="button">X</button><strong>Error:</strong> You are not authorize.</div>', 'default', array(), 'error');
              $this->redirect(array('controller'=>'pages','action'=>'index','admin'=>false));
              die();
            }
            }           
            if ($this->request->isPost()) {
                if ($this->Auth->login()) {
                    $this->redirect(array('controller'=>'Users','action'=>'dashboard','admin'=>true));
                    die();
                } else {
                    $this->Session->setFlash('<div class="alert alert-danger alert-dismissable"><button class="close" aria-hidden="true" data-dismiss="alert" type="button">X</button><strong>Error:</strong> Invalid Username or password. Try again.</div>', 'default', array(), 'error');
                }
            }


        }

// logout 

 public function admin_logout() {   
    header('pragma: no-cache'); 
    header('Cache-Control: no-cache, must-revalidate'); 
        $this->response->disableCache();        
        $this->Session->delete('Auth.User');
        $this->Session->delete('User');
        $this->Session->destroy();
        $this->Cookie->destroy();
  return $this->redirect(array('controller' => 'users', 'action' => 'dashboard'));
     }

 ?>

Я ожидаю, что Супер Администратор войдет в свой бэкэнд, проверит свой all_customers_list и выйдет из системы в обычном режиме. Я также хочу, чтобы администраторы нижнего уровня входили в свой бэкэнд и проверяли список своих клиентов, который отсортирован из all_Customers_list супер-администратора, а затем выходили из системы, как правило, не переходя в бэкэнд супер-администратора и не подвергая все приложение супер-администрированию. Админ на нижнем уровне Админы. Пожалуйста, уделите мне немного времени.

...