Торт Php всегда перенаправляет на / users / login / - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь выполнить автоматический вход пользователей на основе параметров запроса, но сеанс продолжает истекать, и пользователи продолжают перенаправляться на /users/login

Вот мой UsersController. php

public function login()
    {
        Log::config('InvalidSession', [
            'className' => 'File',
            'path' => LOGS,
            'levels' => ['debug'],
            'file' => 'InvalidSession',
        ]);
        // Log::debug($this->request);
        Log::debug($this->request['url']['redirect']);

        $url_components = parse_url($this->request['url']['redirect']);
        parse_str($url_components['query'], $params);

        $OfferwallId = $params['oid'];
        $UserId = $params['uid'];
        Log::debug('new login functionality Oid[' . $OfferwallId . '] Uid[' . $UserId . ']');


        $valid = true;

        if (empty($OfferwallId)) {
            $valid = false;
            $this->Flash->error(__('Invalid Offerwall'));
        }

        if (empty($UserId)) {
            $valid = false;
            $this->Flash->error(__('Invalid User'));
        }

        Log::debug('Valid['.$valid.']');
        if ($valid) {
            // Log::debug($this->request);
            //Log::debug($this->request['url']);

            $Offerwalls = TableRegistry::get('Offerwalls');
            $Offerwalls = $Offerwalls->find()->where(['Id' => $OfferwallId]);



            if (count($Offerwalls) == 0) {
                $valid = false;
                $this->Flash->error(__('Invalid Offerwall Id'));
            }



            if ($valid) {
                $Users = TableRegistry::get('Users');
                $conditions = array(
                    'UserId' => $UserId,
                    'OfferwallId' => $OfferwallId,
                );
                if ($this->Users->exists($conditions)) {
                    $user = $Users->find()->where($conditions);
                    $user = $user->toArray();
                    $this->Auth->setUser($user);                    

                    Log::debug('Setting user , probably session as well and redirecting');
                    return $this->redirect(
                        array(
                            "controller" => "Users",
                            "action" => "surveys",
                            "oid" => $OfferwallId,
                            "uid" => $UserId,
                            "from" => "login_page"
                        )
                    );
                } else {

                    //redirect to registration

                    return $this->redirect(
                        array(
                            "controller" => "Users",
                            "action" => "registration",
                            "oid" => $OfferwallId,
                            "uid" => $UserId
                        )
                    );
                }
            }
        }
    }

Контроллер моего приложения. php

 public function initialize()
    {
        parent::initialize();

        $this->loadComponent('RequestHandler', [
            'enableBeforeRedirect' => false,
        ]);
        $this->loadComponent('Flash');

        $this->loadComponent('Auth', [
            'unauthorizedRedirect' => [
                'controller' => 'Users',
                'action'     => 'index'
            ],
            'loginRedirect' => array('controller' => 'users', 'action' => 'surveys'),
            'logoutRedirect' => array('controller' => 'users', 'action' => 'index'),
            'storage' => 'Session'
        ]);

        $IpAddress = $this->request->clientIp();
        $resultVpn = IpLog::LogIpAddress($IpAddress);



        if ($resultVpn['IsVpn'] == 1) {
            //if its a vpn then redirect to the error page .
            if (!(
                strtolower($this->request->params['controller']) == 'users'
                &&
                strtolower($this->request->params['action']) == 'vpnerror'
                )
                ||
                strtolower($this->request->params['controller']) == 'postback'
                ||
                strtolower($this->request->params['controller']) == 'api'
                ) {


                return $this->redirect(
                    array(
                        "controller" => "Users",
                        "action" => "vpnerror",
                        "oid" => 1,
                        "uid" => 1,
                        "email" => 1,
                        "ipaddress" =>  $IpAddress,
                        "countryname" => $resultVpn['CountryName'],
                    )
                );
            }
        }
    }


    public function beforeFilter(Event $event)
    {
        $this->Auth->allow(['registration', 'index' , 'UnsubscribeSurveyNotify']);
    }

И мое приложение. php

'Session' => [
        'defaults' => 'php',
        'timeout'=>302400//in minutes
    ]

PS: Я загружаю это в iframe. Если я загружаю сайт напрямую, он работает нормально, но в iframe он продолжает перенаправлять в / users / login /

Ниже приведены журналы, которые я получаю

2020-03-24 01:50:12 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=index_page
2020-03-24 01:50:12 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:12 Debug: Valid[1]
2020-03-24 01:50:12 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:13 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:13 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:13 Debug: Valid[1]
2020-03-24 01:50:13 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:13 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:13 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:13 Debug: Valid[1]
2020-03-24 01:50:13 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:14 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:14 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:14 Debug: Valid[1]
2020-03-24 01:50:14 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:15 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:15 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:15 Debug: Valid[1]
2020-03-24 01:50:15 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:15 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:15 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:15 Debug: Valid[1]
2020-03-24 01:50:15 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:16 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:16 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:16 Debug: Valid[1]
2020-03-24 01:50:16 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:17 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:17 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:17 Debug: Valid[1]
2020-03-24 01:50:17 Debug: Setting user , probably session as well and redirecting
2020-03-24 01:50:17 Debug: /users/surveys?oid=6&uid=118220773802600666858&from=login_page
2020-03-24 01:50:17 Debug: new login functionality Oid[6] Uid[118220773802600666858]
2020-03-24 01:50:17 Debug: Valid[1]
2020-03-24 01:50:17 Debug: Setting user , probably session as well and redirecting

, и в конце я получаю ударил, но слишком много запросов.

1 Ответ

0 голосов
/ 24 марта 2020

Я нашел проблему. Этот сайт размещен на другом сайте и загружается в iframe. Таким образом, сеанс восстанавливается при каждом новом запросе из-за реферера.

Надеюсь, он кому-нибудь поможет.

...