Желательно ли привязывать данные приложения к запросу в Laravel 5?

Было бы целесообразно, если я делаю аутентификацию в промежуточном программном обеспечении и добавляю некоторые данные в \Illuminate\Http\Request $request объект и используя эти данные в контроллере, вводя \Illuminate\Http\Request $request в метод контроллера?

Причина в том, что приложению необходимо выполнить вызов базы данных, чтобы выяснить, действительны ли учетные данные, и если это так, оно возвращает что-то вроде первичного ключа, который я использую в последующих операциях с БД.

На данный момент все сделано в контроллере. Если бы я использовал отдельное промежуточное программное обеспечение для аутентификации, могу ли я привязать данные, которые нужны моему контроллеру, к объекту запроса, если проверка промежуточного программного обеспечения прошла? если да, то как мне это сделать?

Вдохновение — Expressjs способ связывания и передачи данных по запросу через стек промежуточного программного обеспечения / маршрутов.

10

Решение

Я не понимаю — почему вы просто не используете аутентификатор Laravel?

Ты говоришь:

Причина в том, что приложению необходимо выполнить вызов базы данных, чтобы выяснить, действительны ли учетные данные, и если это так, оно возвращает что-то вроде первичного ключа, который я использую в последующих операциях с БД.

И это именно то, что делает Аутентификатор Laravel?

Тогда в вашем контроллере вы можете просто сделать

`auth()->user()` // gives you the user record
`auth()->id()` // user_id from the DB
`auth()->user()->name` // gives you the `name` column off the record. You can change it to anything.

Редактировать: Между тем — вы все еще можете использовать пакет Laravel Authenticator, используя устаревшую систему для аутентификации. В вашем промежуточном программном обеспечении вы можете сделать что-то вроде этого:

if (doLegacyCheckHere()) {
Auth::loginUsingId(1);
}

Это означает, что вы можете выполнить свою проверку через граф neo4j db — и если он вернется true что пользователь аутентифицирован правильно — тогда вы просто регистрируете их в системе Laravel самостоятельно.

6

Другие решения

Да, это, вероятно, хороший способ сделать это, так как встроенная система аутентификации Laravel работает так же: вы можете получить доступ к зарегистрированному пользователю через $request::user(), Увидеть http://laravel.com/docs/5.0/authentication#retrieving-the-authenticated-user

2

Это нормально для проверки подлинности в промежуточном программном обеспечении. В моем приложении мы используем ту же функциональность, чтобы проверить, отправляет ли пользователь правильный код доступа для доступа к методам API. Даже Laravel сам обрабатывает защищенные маршруты с помощью промежуточного программного обеспечения Authenticate.

Проблема в том, что нет серебряной пули о том, как и где хранить дополнительные данные.

Один из способов — сохранить это в сеансе пользователя.

Второй заключается в использовании Illuminate\Foundation\Application сам класс. Вы можете вставить его в свое промежуточное ПО __constructor() и использовать его для сохранения ваших данных. Application класс расширяет класс Container, который реализует интерфейс ArrayAccess, который позволяет вам получить доступ к его свойствам, как к массиву. Это позволяет вам не только получать переменные из приложения, но и хранить их. Не самый лучший способ, хотя самый простой.

public function __construct(\Illuminate\Foundation\Application $app)
{
$app['_foo'] = 'bar';
}

Таких хаков больше, но они самые простые.

1
По вопросам рекламы [email protected]