2013-03-26 2 views
4

Я хочу отобразить список зарегистрированных пользователей в приложении. Я хочу использовать метод Laravel Auth. Я смотрю на API, и я не могу найти ничего подобного.Laravel, в настоящее время зарегистрированный пользователь

Мне бы, вероятно, нужно было пройти через хранилище сеансов, а затем сопоставить его с идентификатором пользователя. Я прав?

ОБНОВЛЕНИЕ: Забыл упомянуть, я храню сессии в БД.

ответ

18

«Текущий вход» - это то, что вы не можете делать с обычными старыми сеансами. Позвольте мне объяснить, почему:

Сессия - это куча данных, хранящихся на стороне сервера, которая назначается пользователю через файл cookie. Этот файл cookie остается в браузере пользователя, поэтому он сохраняет сессию активным. Сеансы могут оставаться «живыми» месяцами, даже если пользователь даже не вошел в систему.

Но, возможно store sessions on database.

Как вы можете видеть, Laravel держит поле под названием last_activity, и через это поле вы сможете получить все сеансы, которые имели активность за последние 15 минут (или что-то еще, вы называете это).

Когда вы извлекаете эти записи, поле data представляет собой сериализованное представление данных сеанса. Вы можете указать unserialize($session_record->data) и получить идентификатор пользователя.

В зависимости от драйвера Auth, идентификатор сеанса пользователя, может иметь различные названия:

  • Для красноречивым водителя, он должен быть eloquent_login.
  • Для свободного водителя fluent_login.
  • Для вашего Custom\AuthClass, его следует называть custom_authclass_login.
+0

Привет, это то, что я думал делать ... Спасибо, но я уже знал, что это ... – Mission

+3

миссии, вы можете быть немного конкретнее о ваших реальных сомнениях? Затем мы можем дать более точный ответ. – vFragosop

+0

@vFragosop, он не сомневается, он просто знал подробности из вашего информационного ответа, а затем сказал: да, это легко, и я знал об этом, зачем тогда беспокоиться. Игнорируйте его приятеля, у вас был лучший ответ. –

-2

Сначала нужно создать таблицу, где авторизованы идентификатор пользователя будет вставлен

Schema::create('active_users', function(Blueprint $table) 

{ 

        $table->increments('id')->unsigned(); 
        $table->integer('user_id')->unsigned(); 
        $table->foreign('user_id')->references('id')->on('users') 
         ->onUpdate('cascade')->onDelete('cascade'); 

        $table->timestamps(); 
     }); 

Затем в yourcontroller данных вставки при входе в

if (Auth::attempt($credentials)) { 

        DB::table('active_users')->insert(array('user_id' => Auth::id())); 
} 

и удалить данные при вводе в эксплуатацию

DB::table('active_users')->where('user_id', '=', Auth::id())->delete(); 

Распечатать список пользователей онлайн на ваш взгляд

<ul><strong>Online Users</strong> 
      <?php $online_users = DB::table('active_users')->where('user_id','!=',Auth::id())->get(); ?> 

      @foreach($online_users as $online_user) 
       <li>{{User::find($online_user->user_id)->first_name}}</li> 
      @endforeach 
     </ul> 
+0

Что произойдет, когда сессия закончится? –

+0

Когда сеанс заканчивается, удалите строку из таблицы active_users. –

Смежные вопросы