Laravel 6.x новое связующее программное обеспечение password.confirm не работает с настраиваемой защитой - PullRequest
0 голосов
/ 21 апреля 2020

новая функция password.confirm была добавлена ​​в структуру laravel 6.2. У меня есть установка fre sh laravel 6.18.8, я сделал мульти-аутентификацию на основе защиты. Я хочу запустить password.confirm для этой таможенной охраны. Вход в систему / выход из системы для защиты: администратор работает правильно, после входа правильно перенаправляет на адрес администратора / домашний адрес. Подтверждение, если я вошел в систему для защиты: администратор до сих пор работает правильно: - если я уже вошел в систему для защиты: администратор попытка войти в систему admin / login перенаправляет меня к admin / home - правильно - если я не вошел в систему в, попытка ввести admin / home перенаправит меня к admin / login - правильно

, но

пытается go к admin / secret (который должен запрашивать пароль администратора) перенаправляя меня на страницу входа пользователя, потому что открыть пароль / подтвердить URL-адрес (для защиты по умолчанию)

Когда я вошел в систему как администратор и вручную попробуйте открыть URL-адрес admin / пароль / подтвердить показывает ошибку

Target class [admin] does not exist. 

Есть ли шанс запустить это? Или сделан "как есть" и не будет играть ни с одним из сторожевых устройств по умолчанию?

В настоящее время мой код для защиты: admin: config / auth. php

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
    ],

маршруты / сеть. php

/*
|--------------------------------------------------------------------------
| Web Routes for admin panel
|--------------------------------------------------------------------------
|
|
*/

Route::prefix( env('ADMIN_PREFIX', 'admin') )->name('admin.')->namespace('Admin')->group(function () {
    // Auth::routes(['register' => false, 'verify' => false]);
    // Login/out process
    Route::get('/login', 'Auth\LoginController@showLoginForm')->name('login');
    Route::post('/login', 'Auth\LoginController@login')->name('login');
    Route::post('/logout', 'Auth\LoginController@logout')->name('logout');
    // Password reset process
    Route::get('/password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
    Route::get('/password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
    Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
    Route::post('/password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');
    // Password confirmation process
    Route::get('/password/confirm', 'Auth\ConfirmPasswordController@showConfirmForm')->name('password.confirm');
    Route::post('/password/confirm', 'Auth\ConfirmPasswordController@confirm')->name('password.confirm');

    Route::middleware('auth:admin')->group(function() {
        Route::view('/home', 'admin.home')->name('home');
        Route::view('/secret', 'admin.secret')->name('secret')->middleware('password.confirm');
    });

1 Ответ

0 голосов
/ 21 апреля 2020

Хорошо, я вижу, что вы можете указать, куда пересылать, например,

middleware('password.confirm:admin.password.confirm')

И я обнаружил проблему ... глупо; P В конструкторе Admin / Auth / ConfirmPasswordController. php file, я набрал middleware ('admin: auth') вместо 'auth: admin'

...