2014-09-23 3 views
0

В одном Laravel проекте, я бы два метода аутентификации:Laravel: несколько Auth реализация метода

  1. клиента API аутентификации (для проверки, если клиент может запросить API) с выделенной красноречивым модели (что-то вроде APIUser)
  2. аутентификация пользователя (для проверки учетных данных пользователя) с другим выделенной моделью (Something пользователем)

Я хотел бы проверить подлинность через первую систему Идента затем проверить учетные данные пользователя с помощью второй системы AUTH. Пример:

curl -u a:b myapi/?user=c&pass=d

Так a & b являются логин и пароль для аутентификации клиента API и c & d являются логин и пароль для аутентификации пользователя. Какой может быть лучший способ сделать это: создать многоадресную систему? или рассматривать только одну систему для auth, а другая просто запрашивает базу данных? или что-то другое ? (надеюсь, что мой вопрос будет достаточно ясным, я могу отредактировать, если вам нужно)

ответ

0

Multiauth работает как встроенный laravel auth, но допускает несколько независимых сеансов аутентификации (вы можете войти в систему на первой, второй или обеих учетных записях).

+0

Спасибо! Как я уже сказал Куше, мой вопрос состоял не в том, что «есть многоатомная система в ларавеле», а «я должен использовать для этого многовариантную систему». Извините, мой вопрос был не таким ясным ... Я скоро отредактирую. Большое спасибо ! –

+0

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

0

Используйте удлинитель Ollieread MultiAuth для Laravel. Он все настраивает для вас. Просто откройте файл app/config/auth.php и заменить этот массив:

return array(
    'driver' => 'eloquent', 
    'model' => 'User', 
    'table' => 'users', 
    'reminder' => array(
     'email' => 'emails.auth.reminder', 
     'table' => 'password_reminders', 
     'expire' => 60, 
    ), 
); 

с

return array(
    'multi' => array(
     'admin' => array(
      'driver' => 'eloquent', 
      'model' => 'Admin' 
     ), 
     'user' => array(
      'driver' => 'database', 
      'table' => 'users' 
     ) 
    ), 

    'reminder' => array(
     'email' => 'emails.auth.reminder', 
     'table' => 'password_reminders', 
     'expire' => 60, 
    ), 
); 

Конечно, вы можете добавить столько, сколько вы хотите. Затем скопируйте папку по умолчанию User.php для таблицы Admin.php.

+0

Хорошо спасибо за ваш ответ! Мой вопрос был не в том, как использовать MultiAuth Ollieread с пользователем и администратором, но: как лучше всего (1) подключиться к api через http basic (2), а затем проверить учетные данные пользователя? создать (или использовать) многоадресную систему (например, MultiAuth Ollieread)? или рассматривать только одну систему для auth (http basic для API auth), другой просто запрашивает базу данных (проверьте учетные данные в базе данных, а затем верните true или false клиенту api)? или что-то другое ? Речь идет не о уровне пользователя (нет контекста «пользователь» и «админ»). Надеюсь, что это достаточно ясно (извините, что это не так). Спасибо :) –

+0

@ rap-2-h, ваш «клиент» больше похож на разрешение? Или это целая другая пользовательская система? Если у вас фактически есть два типа пользователей (Пользователь и Клиент), тогда вам следует использовать систему с несколькими авторизациями по соображениям безопасности. Если у вас есть только один тип пользователей, у которых могут быть разные разрешения (например, модераторы, рецензенты), вы можете реализовать ACL. – Kousha

+0

Слово «клиент» относится к «клиенту/серверу», а не к типу пользователя. Извините за недопонимание –