Невозможно установить логин запомнить меня куки при инициализации перенаправления ci4

avatar
ven
8 августа 2021 в 22:23
347
2
0

Я хочу добавить опцию «Запомнить меня» в функции входа в систему. Когда я устанавливаю опцию «Запомнить меня», не перенаправляя пользователя на его страницу успешного доступа, файл cookie сохраняется идеально, но проблема возникает, когда я раскомментирую перенаправление. Когда пользователь пытается войти в систему, он перенаправляет и обходит процесс для сохранения файлов cookie. Как решить эту проблему?

public function login(){
    $username = $this->request->getPost('username');
    $password = $this->request->getPost('password');

    $user = $this->model->getLoginData($username); 
    $rowCount = count([$user]);

    if($user){
        if (password_verify($password, $user->password)){
            //store session data
            $this->auth->userSession($user);

            //remember me 
            if(!empty($this->request->getPost("remember"))){
                $cookie_hash = md5(uniqid()."sghsgd876mbjb");
                set_cookie('hash_cookie', $cookie_hash, 36000 );
            }else{
                set_cookie('hash_cookie', '');
            }  

            return redirect()->to('/manager');               
        }
    }
}
Источник

Ответы (2)

avatar
Jonathan A
8 августа 2021 в 23:26
0

Вы должны указать путь к файлу cookie /, чтобы он работал для всех путей, а не только для текущего.

set_cookie('hash_cookie', $cookie_hash, 36000, '/' );

Как я прочитал этот пост Как я могу установить файл cookie, а затем перенаправить в PHP?

ven
9 августа 2021 в 07:49
0

Я пробовал это, но все еще не сохранил файл cookie, но когда я удаляю перенаправление, он сохраняет файл cookie. Я не понял, почему не работает.

avatar
丹尺爪工れ
10 августа 2021 в 13:31
0

Попробуйте использовать помощники Codeigniter вместо set_cookie($cookie);

Здесь вы можете прочитать больше - ССЫЛКА

попробуйте отправить файлы cookie с помощью этой функции:

// Copies all cookies from global response instance
return redirect()->back()->withCookies();

дополнительную информацию см. в документах ССЫЛКА

ven
11 августа 2021 в 22:38
0

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

丹尺爪工れ
12 августа 2021 в 08:34
0

попробуйте этот, он должен сделать эту работу за вас.

ven
12 августа 2021 в 08:52
0

Поскольку я хочу сохранить файл cookie «запомнить меня», перенаправление с данными не будет хорошим подходом. Спасибо @Армин