2015-04-27 4 views
1

В моем контроллере (ах) вместо выборки Auth::id() в каждом методе я установил свойство класса $id в классе контроллера и вытащил его один раз в конструкторе. то в остальных методах я просто ссылаюсь на $this->id, считается ли он безопасным или я делаю что-то неправильно?Laravel Чтение идентификатора пользователя в конструкторе контроллера

Пример кода: http://pastebin.com/pvju54eh

ответ

1

Что вы можете сделать, это придать экземпляр Guard в контроллере, а затем назначить текущего пользователя (если он есть) к классу недвижимости:

<?php namespace App\Http\Controllers; 

use Illuminate\Contracts\Auth\Guard; 

class SomeController extends Controller 
{ 
    protected $auth; 
    protected $user; 

    public function __construct(Guard $auth) 
    { 
     $this->auth = $auth; 
     $this->user = $this->auth->user(); 
    } 

    public function someMethod() 
    { 
     // Get logged in user’s ID 
     $userId = $this->user->id; 
    } 
} 
+0

Я просто сделал это: http://pastebin.com/pvju54eh, похоже, работает ... – Broshi

+0

@Broshi Это будет, но лучше использовать зависимости объявлений через интерфейсы, чем фасады. –

0

Я не вижу серьезных проблем с этим подходом, хотя я часто не встречал подход.

Мне кажется, что легче получить запрос $ request-> user() в контроллере от Request.