2013-04-23 3 views
0

Я разрабатываю приложение Yii, которое использует несколько модулей, включая модуль прав для контроля доступа. Все они находятся в одной и той же папке «modules» и настроены в том же файле config/main.php. И приложение имеет только один скрипт ввода.Права модули используют другой экземпляр приложения

Однако я заметил, что модуль Rights использует другой сеанс приложения, а все остальные модули используют другой сеанс приложения. По этой причине сеанс пользователя не используется совместно с правами.

Неужели кто-нибудь сталкивается с такой проблемой с помощью модулей yii? пожалуйста помоги. Благодаря!

мой конфигурационный файл:

'rights'=>array(
      'debug' => true, 
      'superuserName'   => 'Super Administrator', // Name of the role with super user privileges.      
      'authenticatedName'  => 'Customer', // Name of the authenticated user role. 
      'userIdColumn'   => 'id', // Name of the user id column in the database. 
      'userNameColumn'  => 'username', // Name of the user name column in the database. 
      'enableBizRule'   => true, // Whether to enable authorization item business rules. 
      'enableBizRuleData'  => true, // Whether to enable data for business rules. 
      'displayDescription' => false, // Whether to use item description instead of name. 
      'flashSuccessKey'  => 'success', // Key to use for setting success flash messages. 
      'flashErrorKey'   => 'error', // Key to use for setting error flash messages. 
      //'baseUrl'    =>'/rights', // Base URL for Rights. Change if module is nested. 
      //'layout'    => 'rights.views.layouts.main', // Layout to use for displaying Rights. 
      //'appLayout'   => 'application.views.layouts.main', // Application layout. 
      //'cssFile'    => 'rights.css', // Style sheet file to use for Rights. 
      'install'    => false, // Whether to enable installer. 
     ), 
+0

Должна быть некоторая проблема с кодом. можете ли вы вставить код, чтобы я мог судить? но я думаю, что разные сессии не проблема, потому что, по моему пониманию, это невозможно. –

+0

Я думаю, что более вероятно, что модуль прав не был создан при попытке получить к нему доступ ... если, например, в правилах доступа к контроллеру вы ссылаетесь на пользовательский модуль, вам нужно убедиться, что модуль имеет были связаны с UserIdentity сначала ... – ChrisB

+0

привет, ребята, спасибо за комментарии. Я обновил вопрос с помощью моих данных конфигурации. модуль прав также включен как любой другой модуль в системе. Настолько странно, что права используют совершенно другой экземпляр приложения, а все остальные модули используют обычный экземпляр приложения. Я подтвердил это, проверив идентификатор приложения (Yii :: app() -> id) – nterms

ответ

0

После попытки в течение двух дней, я нашел решение.

Я заметил, что он использует два разных префикса ключей (stateKeyPrefix) в системе. One for Rights и еще один для других модулей. Это можно настроить для использования префикса с одним ключом в основном файле конфигурации.

'user'=>array(
      'class'=>'RWebUser', 
      'allowAutoLogin'=>true, // enable cookie-based authentication 
      'stateKeyPrefix'=>'f298d9729c7408c3d406db95a9639204', // some random value 
    ), 

Надеюсь, что это поможет кому-то с той же проблемой.