Аргумент 1, передаваемый в Illuminate \ Auth \ SessionGuard :: try (), должен иметь тип массива, данный объект вызывается в - PullRequest
0 голосов
/ 11 июля 2019

У меня есть контроллеры, указанные ниже, чтобы позволить пользователю войти в систему через систему авторизации laravel, но когда пользователь нажимает кнопку «Войти», я получаю следующую ошибку:

Аргумент 1, передаваемый в Illuminate \ Auth \ SessionGuard :: try (), должен иметь массив типов, данный объект вызывается из C: \ laragon \ www \ AGRIAPP \ projet investisseur \ AgriApp_Investor \ AgriAppInvestor \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Auth \ AuthenticatesUsers.php в строке 82

Когда я обновляю страницу, я захожу, чтобы решить эту проблему

Согласно документации, функция попытки принимает массив и логическое значение

LoginController.php

public function __construct()
{
    $this->middleware('guest')->except('logout');
}

public function showLoginForm()
{
    return view('auth.login');
}


protected function credentials(Request $request)
{
    $credentials = array(
        'slug' => $request->slug,
        'password' => $request->password,
        'statut' => 1,
    );

    if(Auth::attempt( $credentials,false ))
    {
        return Redirect::to( '/admin/home' );
    }
}


public function username()
{
    return 'slug';
}

protected function authenticated()
{
    $user = auth()->user();
    $user->online = true;
    $user->save();

    if ($user->rule->pluck( 'name' )->contains( 'abonne' )) {
        return Redirect::to( '/admin-dashboard' );
    }

    return Redirect::to( '/admin/home' );
}

public function logout()
{
    $user = Auth::user();
    $user->online=false;
    $user->save();
    Auth::logout();

    return redirect('/');
}}

AuthController.php

protected function attemptLogin(Request $request)
{
    return $this->guard()->attempt(
        $this->credentials($request), $request->filled('remember')
    );
}

/**
 * Get the needed authorization credentials from the request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
protected function credentials(Request $request)
{
    return $request->only($this->username(), 'password');
}

1 Ответ

0 голосов
/ 11 июля 2019

Вы переопределили метод credentials(), но ничего от него не вернули.

Измените свой метод учетных данных на:

protected function credentials(Request $request)
{
    return [
        'slug'     => $request->slug,
        'password' => $request->password,
        'statut'   => 1,
    ];
}

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

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

Кроме того, я не уверен, является ли statut опечаткой или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...