0

ログイン後に参照 URL にリダイレクトする方法はありますか?

私は私の設定でこれを持っています:

'redirect_strategy' => [
    'redirect_when_connected'        => false,
    'redirect_to_route_connected'    => 'home',
    'redirect_to_route_disconnected' => 'login',
    'append_previous_uri'            => true,
    'previous_uri_query_key'         => 'redirectTo'
],

previous_uri_query_keyユーザーがアクセス許可を持っていないページに移動したときにのみ追加されます。たとえば、誰かがブラウジングしてからログインしたが、中断したところからブラウジングを続けたいとします。

ログインアクションで使用しようとし$_SERVER['HTTP_REFERER']ましたが、そのアクションを実行してページをロードし、資格情報を投稿するとログインします。このようにすると、サーバーはリファラーがログインページであると認識し、あなたを連れて行きますそこに戻って。

おそらく簡単な解決策があり、私は現在それを見ていません。

****************ジェリー・リグ********************

ということで、とりあえず使ってみたのがこれ。より良い解決策が欲しいので、これを答えにするつもりはありません。戻ってこれを修正する時間があれば、解決策を投稿します。しかし、今のところ私が使用しているものはここにあります。

if (null === $this->params()->fromQuery('redirect') && $this->shouldAddRedirect($request->isPost()) &&  !$request->isPost()) {
    return $this->redirect()->toUrl('sign-up?redirect=' . $_SERVER['HTTP_REFERER']);
}

私が呼び出す関数はshouldAddRedirect次のようになります

private $no_redirect = array(
    '/login',
    '/sign-up'
);

protected function shouldAddRedirect($isPost) {
    if (isset($_SERVER['HTTP_REFERER'])){
        $referer_url = parse_url($_SERVER['HTTP_REFERER']);
        if (isset($referer_url['query']) && count($referer_url['query'])) {
            return false;
        }
        if (isset($referer_url['path']) && in_array($referer_url['path'], $this->no_redirect)) {
            return false;
        }
    } else if ($isPost) {
        return false;
    }

    return true;
}
4

0 に答える 0