Войти с любым паролем в Laravel в режиме разработки - PullRequest
0 голосов
/ 22 мая 2018

У нас есть функция auth() в laravel, и мы называем ее так:

auth()->attempt(['email' => 'hello@gmail.com', 'password' => 123456]);

Я хочу установить нового провайдера для защиты сессии и настроить егона config/auth.php также войдите в систему с любым паролем в auth() функция в режиме разработки .

Но я не могу найти способ сделать это в моем файле провайдера !

1 Ответ

0 голосов
/ 22 мая 2018

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

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


В /app/Providers/AuthServiceProvider.php зарегистрируйте новую охрану:

    use App\Services\Auth\SillyGuard;

...

public function boot()
{
    $this->registerPolicies();

    Auth::extend('silly', function ($app, $name, array $config) {
        // Return an instance of Illuminate\Contracts\Auth\Guard...

        return new SillyGuard(Auth::createUserProvider($config['provider']));
    });
}

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

'guards' => [
    //others
    'web' => [
        'driver' => 'silly',
        'provider' => 'users',
    ],
],

Скопируйте файл ...src/Illuminate/Auth/SessionGuard.php в app/Services/Auth/SillyGuard.php и внесите следующие изменения:

//namespace Illuminate\Auth;
namespace App\Services\Auth;

...

public function __construct($name,
                            UserProvider $provider,
                            SessionInterface $session,
                            Request $request = null)
{
     if (!\App::environment('local') || !config('app.debug')) {
         die("This guard only works in local debug mode");
     }
     $this->name...

...

 protected function hasValidCredentials($user, $credentials)
{
    //return ! is_null($user) && $this->provider->validateCredentials($user, $credentials);
    return ! is_null($user);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...