要ログインページのURLをメールから直接開けないケース

要ログインページのURLをメールで送信して開いてもらった場合、
ログイン後の遷移先が、指定のURLではなくRouting.basePathになる場合があります。


Yahooメールで確認しましたが、他のブラウザメールでも発生するかもしれません。


メールアドレス登録確認などでは、ログインリダイレクト関連の設計に注意する必要があります。




原因は、以下の場所と思われます。


認証の無い状態で、要ログインページのURLを開いた場合、
一度ログインアクションにリダイレクトした後、startup()の以下の箇所を通ります

cake/libs/controllers/components/auth.php:308行目

if ($loginAction == $url) {
	if (empty($controller->data) || !isset($controller->data[$this->userModel])) {
		if (!$this->Session->check('Auth.redirect') && env('HTTP_REFERER')) {
			$this->Session->write('Auth.redirect', $controller->referer(null, true));
		}
		return false;
	}


YahooメールでhtmlメールのURLをクリックした場合、リファラにメールボックスのURLが送信されています。
そのため、ここで元のURLへのリダイレクト設定が消されてしまうようです。


おそらく、クリック詐欺的なURLを無効にする対策と思われますが、ちょっと注意です。