Невозможно сохранить массив в сеансе, если размер массива большой laravel 6 - PullRequest
0 голосов
/ 25 января 2020

Я использую пользовательский метод для аутентификации пользователя. При аутентификации пользователя я помещаю некоторые данные в сессию. Данные, которые я вставляю, это массив / объект. Но я сталкиваюсь с проблемой, если размер массива больше 8. Если я помещаю 9 данных массива, это выводит меня из системы (возможно, возникли некоторые проблемы с сессией). Не могу найти причину этого. Кто-нибудь может мне помочь!

это мой массив / структура объекта.

    [0] => stdClass Object
    (
        [privileges_of_role_id] => 1
        [role_id] => 4
        [institute_branch_version_id] => 1
        [is_active] => 1
    )

метод, который я обрабатываю для аутентификации пользователя:

public function signInAction(Request $request)
{
    if (!$request->ajax()) {
        $validator = Validator::make($request->all(), array(
            'identifiers' => 'required|max:255',
            'password' => 'required|max:20'
        ));

        if ($validator->fails()) {
            return redirect()->back()
                ->withErrors($validator)
                ->withInput();
        }

        try {
            $loginBy = NULL;
            $loginByValue = $request->identifiers;

            if (is_numeric($loginByValue)) {
                if (strlen($loginByValue) > 3 && substr($loginByValue, 0, 3)) {
                    $loginBy = 'phone_no';
                } else {
                    $loginBy = 'user_id';
                }
            } else if (filter_var($loginByValue, FILTER_VALIDATE_EMAIL)) {
                $loginBy = 'email';
            } else {
                $loginBy = 'username';
            }
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }

        $loginCredentials = array(
            $loginBy => $loginByValue,
            'password' => $request->password,
            'is_active' => 1
        );

        if (Auth::attempt($loginCredentials)) {

            $PrivilegesOfRole = DB::table('tbl_privileges_of_roles')
                ->where('role_id', Auth::user()->role_id)
                ->where('is_active', 1)
                ->take(8)  // if i take 9, its not letting me logged in.
                ->get();
            $request->session()->put('PrivilegesOfRole', $PrivilegesOfRole);


            return redirect()->intended(route('home::onlineInfo'));
        } else {
            return redirect()->back()
                ->with('errorMessage', 'The identifiers and password you entered don\'t match.')
                ->withInput();
        }
    } else {
        throw new Exception('Invalid request!');
    }
}

1 Ответ

1 голос
/ 25 января 2020

Попробуйте использовать другой драйвер сеанса .

Максимальная длина файлов cookie - 4096 байт - если вы в данный момент используете драйвер cookie, вы можете столкнуться с этим ограничением.

.env:

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