CakePHP Auth Redirect и реферер - PullRequest
1 голос
/ 11 января 2012

Позвольте мне объяснить ситуацию, прежде чем я задам вопрос. У меня есть сайт, domain.com. страница sub.domain.com требует, чтобы пользователь вошел в систему для доступа. Если я разрешаю доступ к sub.domain.com/login, который предоставляет форму с действием domain.com/login, он отправляет данные на domain.com/login и перенаправляет обратно на sub.domain.com/login, как и положено. Однако, если я пытаюсь получить доступ к sub.domain.com (который требует аутентификации), он перенаправляет на домен domain.com/login правильно, но не перенаправляет обратно на sub.domain.com после входа в систему. Я обнаружил, что ошибка заключается в том, что редирект, когда не вошел в систему, не отправлял заголовок реферера. Есть ли способ сделать так, чтобы, если пользователь пытается получить доступ к странице на поддомене, требующем аутентификации, он перенаправил его на domain.com/login, а затем обратно туда, где он был первоначально?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Хорошо, все это было связано с маршрутами.Наконец-то я смог заставить его работать, настроив инструкцию switch в моем файле rout.php:

switch(Configure::read('subdomain'))
{
     case 'subdomain':
          Router::connect('/login', array('controller'=>'users', 'action'=>'login'));
}

И настроил мой загрузчик так:

preg_match('/^(?:www\.)?(?:(.+)\.)?(.+\..+)$/i', env('HTTP_HOST'), $matches); 
$subdomain = empty($matches[1]) ? false : $matches[1];  
if( strlen($subdomain) > 0 && $subdomain != "www" ) 
{
    if($subdomain == 'api')
        $_GET["url"] =  $subdomain . "/" . (isset($_GET["url"]) ? $_GET["url"] : ""); 
    Configure::write('subdomain', $subdomain);
} 
0 голосов
/ 11 января 2012

Всегда ли редирект нужно перенаправлять обратно на sub.domain.com?Если это так, я бы предложил установить атрибут AuthComponents loginRedirect в место, куда вы хотите перенаправить пользователя.См. Эту страницу: http://book.cakephp.org/1.3/en/view/1270/loginRedirect

Кроме того, на этой странице написано, что CakePHP автоматически сохраняет пару контроллер-действие, к которой вы обращались до входа в систему в вашей сессии .Так что, возможно, вам также следует проверить, является ли ваша сессия общей для domain.com и sub.domain.com.

Последний комментарий: что происходит после входа в систему?Вы перенаправлены на контроллер / действие на domain.com или вообще не перенаправлены?

ПРИМЕЧАНИЕ. Я предполагаю, что вы используете CakePHP 1.3 и используете AuthComponent для входа пользователей в систему.

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