Как потребовать повторного подтверждения пароля для определенных маршрутов в Laravel? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть секретный маршрут в Laravel, который должен находиться за защитой подтверждения пароля (например, режим GitHub sudo, когда вы собираетесь удалить репо или добавить соавтора)

Route::get('/secret', 'DiariesController@index')->middleware(['auth', 'verified']);

Но уже аутентифицированные пользователилегко получить доступ к маршрутам

Мне нужен дополнительный уровень защиты от физического доступа к устройству пользователя

Вот что я пробовал до сих пор

DiariesController

public function index()
{
    if (session()->has('sudo')) {
        return view('secret.diaries');
    }
    auth()->logout();
    return redirect('/login');
}

А в LoginController

/**
 * The user has been authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
protected function authenticated(Request $request, $user)
{
    session(['sudo' => true]);
}

Но это в принципе ничего не дает, мне нужно как-то вручную истечь сеансовый ключ sudo

Есть ли прощеспособ достичь этого?

1 Ответ

3 голосов
/ 09 октября 2019

Выпуск Laravel v6.2.0 поставляется с new password confirmation feature. Эта функция позволяет вам присоединить password.confirm middleware к маршрутам, где вы хотите, чтобы пользователь повторно подтвердил свой пароль. С учетом вашего кода ваш маршрут будет выглядеть следующим образом.

Route::get('/secret', 'DiariesController@index')->middleware(['auth', 'verified','password.confirm']);

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

Спасибо

...