Drupal 7 Single Sign при использовании settings.php - PullRequest
5 голосов
/ 28 января 2011

Эй, ребята, мне было просто интересно, как мне настроить мой единый вход без модулей в Drupal 7. Он был запущен в Drupal 6, но некоторые вещи были изменены в файле settings.php, и у меня Трудно понять это.

 You can also use a reference to a schema/database as a prefix. This maybe
 * useful if your Drupal installation exists in a schema that is not the default
 * or you want to access several databases from the same code base at the same
 * time.
 * Example:
 * @code
 *   'prefix' => array(
 *     'default'   => 'main.',
 *     'users'     => 'shared.',
 *     'sessions'  => 'shared.',
 *     'role'      => 'shared.',
 *     'authmap'   => 'shared.',
 *   );
 * @endcode
 * NOTE: MySQL and SQLite's definition of a schema is a database.

Это код, который мне нужен для настройки, я просто не знаю, где поместить его в файл settings.php. Есть идеи?

Ответы [ 4 ]

3 голосов
/ 15 февраля 2011

Мой файл setting.php выглядит так:

$databases = array (
  'default' =>
  array (
    'default' =>
    array (
      'driver' => 'mysql',
      'database' => 'drupal7',
      'username' => 'toto',
      'password' => 'xxxxxxxxxxxxxxx',
      'host' => 'localhost',
      'port' => '',
      'prefix' => array(
          'default'   => '',
          'users'     => 'drupal7_common.',
          'sessions'  => 'drupal7_common.',
          'role'      => 'drupal7_common.',
          'authmap'   => 'drupal7_common.',
          'languages' => 'drupal7_common.',
          'locales_source'   => 'drupal7_common.',
          'locales_target'   => 'drupal7_common.',
        ),
    ),
  ),
);
1 голос
/ 01 августа 2012

Позвольте мне добавить немного больше деталей, используя следующую запись в файле settings.php:

$my_db_users = 'dbusers.shared_';

$databases['default']['default'] = array(
    'driver' => 'mysql',
    'database' => 'dbdefault',
    'username' => 'databaseuser',
    'password' => 'databasepassword',
    'host' => '127.0.0.1',
    'port' => 3066,
    'prefix' => array(
        'default'   => 'default_', 
        'users'     => $my_db_users,
        'sessions'  => $my_db_users,
        'role'      => $my_db_users,
        'authmap'   => $my_db_users, 
    ),
    'collation' => 'utf8_general_ci',
);

В приведенном выше примере мы установили переменную $my_db_users, равную базе данных и префиксу таблицы расположения общих пользовательских данных.

Затем мы устанавливаем префикс таблицы по умолчанию 'default' => 'default_',, который гласит: «сохранить все таблицы, если не указано иное, в defaultdatabase и сделать их префикс таблицы default_ ». Мы также говорим: «сохраните всех пользователей, сеансы, роли и сопоставления ролей пользователей (authmap) в базе данных dbusers с префиксом таблицы shared_ ».

Небольшой поворот:

Подумайте об удалении строки 'authmap' => $my_db_users,. Если вы сделаете это, у вас могут быть одни и те же пользователи и группы в большой сети сайтов, но при этом у пользователей будут разные разрешения на разные сайты. На одном сайте вы можете быть администратором, а на другом - автором.

1 голос
/ 28 января 2011

Стиль Drupal 7 для конфигурации базы данных выглядит так:

$databases['default']['default'] = array(
    'driver' => 'mysql',
    'database' => 'd7',
    'username' => 'drupaluser',
    'password' => '',
    'host' => '127.0.0.1',
    'port' => 33066,
    'prefix' => array(
      'node' => 'foo_',
    )
);

На основании документации:

Я проверил это локально, и, кажется, он работает как ожидалось.

0 голосов
/ 14 декабря 2013

Для подписи на нескольких сайтах с одинаковыми учетными данными необходимо внести некоторые изменения в файл drupal setting.php.

Вот хороший учебник для этой функции: http://drupixels.com/blog/single-sign-drupal-7

...