как добавить / переопределить SessionGurad?

#laravel #laravel-5

#laravel #laravel-5

Вопрос:

Я хочу переопределить один метод в laravel 5.4

src/Illuminate/Auth/SessionGuard.php

 public function id()
{
    if ($this->loggedOut) {
        return;
    }

    return $this->user()
                ? $this->user()->getAuthIdentifier()
                : $this->session->get($this->getName());
}
  

измените на это

 public function id()
{
    if ($this->loggedOut) {
        return;
    }

    return $this->user()
                ? $this->user()->user_id
                : $this->session->get($this->getName());
}
  

я просто хочу изменить $this-> user()-> getAuthIdentifier() на это $this-> user()-> user_id

почему я это делаю, потому что я получаю пользователя из внешнего API, и я не хочу использовать базу данных, я могу сделать это, перейдя в фреймворк и изменив там, но я хочу знать, лучший способ переопределить аутентификацию laravel по умолчанию

Ответ №1:

Или вы могли бы просто переопределить getAuthIdentifier() функцию в вашей пользовательской модели и вернуть user_id свойство.

 public function getAuthIdentifier()
{
    return $this->user_id;
}
  

Комментарии:

1. я уже пробовал это, но по какой-то причине он не обращается к методу, но я могу получить доступ вот так «$this-> user_id», но не так «$this-> user()-> getAuthIdentifier()» в SessionGurad.php когда я отлаживаю

2. я получаю эту ошибку При вызове неопределенного метода stdClass::getAuthIdentifier () я могу получить доступ к пользовательским данным точно так же, как обычный класс, но не могу получить доступ к его методам, они общедоступны, К вашему сведению @jerodev