Защита паролем страницы после входа в систему Laravel - PullRequest
0 голосов
/ 21 октября 2019

После того, как пользователь зарегистрируется и войдет в систему, у меня появится незарегистрированная страница / секретная страница, которую мне нужно защитить с помощью другого пароля.

Я пытаюсь получить spatie / laravel-littlegatekeeper чтобы помочь мне сделать это, но сталкиваюсь с проблемами, заставляющими его работать.

Что я делаю:

littlegatekeeper .config:

<?php

return [
    // Login credentials
    'username' => env('GATEKEEPER_USERNAME', 'default_username'),
    'password' => env('GATEKEEPER_PASSWORD', 'default_password'),

    // The key as which the littlegatekeeper session is stored
    'sessionKey' => 'littlegatekeeper.loggedin',

    // The route to which the middleware redirects if a user isn't authenticated
    // 'authRoute' => url('login'),
];

Маршруты:

Route::get('/secretapage', ['middleware' => 'littlegatekeeper', function () {
    return view('dir.secretapage.index');
}]);

Route::get('/secretapage/login', function () {
    return view('dir.secretapage.login');
});

Route::post('/secretapage/login/addCredentials', 'SecretController@addCredentials')->name('addCredentials');

SecretController:

После входа в систему моего пользователя. Затем я пытаюсь получить доступ к URL / секретной странице, которую перенаправляю обратно на домашнюю страницу, а именно / secretpage / login

    public function index(Request $request)
    {
        $auth = resolve('littlegatekeeper');

        if($auth->isAuthenticated())
        {
            return view('dir.secretpage.index');
        } 

        return view('dir.secretpage.login');

    }

///// FOR LOGING IN

        public function addCredentials(Request $request)
    {

        $auth = resolve('littlegatekeeper');

        $loginSuccess = $auth->attempt($request->only([
            'username',
            'password'
        ]));

        if ($loginSuccess) {
            return redirect('/secretapage')->with('success', 'Thank You for authorizing. Please proceed.');
        }
        else{
            return back()->with('error', 'You entered the wrong credentials');
        }

    }

Файл входа в систему Blade:

<form method="POST" action="{{ route('addCredentials') }}">
...
</form>

Если я получу доступ к секретной странице / первому логину, я смогу добавить имя пользователя и пароль. Тогда я могу попасть на / secretpage без проблем ....

Но мне действительно нужно, чтобы пользователи сначала перешли на / secretpage, а затем, если не залогинены с секретным именем пользователя / pass, перенаправляются на / secretpage /Войти.

1 Ответ

0 голосов
/ 21 октября 2019

Я нашел некоторую помощь по Laracasts , и это сработало.

Измените authRoute в littlegatekeeper config file to the following

'authRoute' => '/secretpage/login',
...