0

ルーティングとフィルタ スクリプトを書き直して、うまくいきました。以下の回答として、コードの縮小版(ほとんどのルートを削除)を投稿しました。最初の回答も受け入れたので、質問に回答します。

laravel の素晴らしさを発見することから始めましたが、今のところ行き詰まっています。

私がしたこと

  • まず、いくつかのルートを作成しました。

    これはうまくいきました。

  • 次に、敗走グループのフィルターを作成しました。

    デフォルトルートの後ろにルートグループを配置したとき、これはちょっとうまくいきました。しかし、コードは上から実行され、デフォルトルートによってデフォルトルートの前に配置すると書き換えられるため、これに頭を悩ませることができます。論理的に聞こえます。

  • 複数のグループ。

    これは、ひどく間違っていないところです。最初に 2 つのフィルターを作成しました。なぜなら、ネガティブ フィルターなどをその方法で作成できるかどうかわからなかったからです。

    一方のフィルターは、もう一方のフィルターとは正反対でした。したがって、フィルター 1 の条件が true の場合、フィルター 2 の条件は false です。これは、一方の敗走はその敗走の条件が満たされた場合にのみ実行され、もう一方の敗走はそうでない場合にのみ実行されることを達成するために行われました。これによりループが発生しましたが、これはわかりません。

私が達成しようとしていること

1 つのグループで数ページにアクセスできるようにしたいが、グループ 2 ではアクセスできないようにしたい、またはその逆。グループ 1 のユーザーがグループ 2 のページをリクエストすると、グループ 1 の「/」ルートにリダイレクトされます。

私の試みは、狂気のリダイレクトの無限ループをもたらしたものです

John Doe が URL に対して get リクエストを行ったとします。彼は「/」ルートに着陸します。John はログインしていません (または条件を満たしていません)。したがって、John はログインしていないユーザーのグループ 1 に属しています。John はログイン ページにリダイレクトされます。

John は、ログインしてログインできるようになりました。John は、ログインしているユーザーで構成されるグループ 2 に属しています。ログイン ページが表示されなくなったはずです。そのため、グループ 2 の人がグループ 1 用のページ (たとえば /login) にリクエストを送信すると、グループ 2 用のページ (たとえば '/') にリダイレクトされる必要があります。

$a = true;
if($a){
  Route::get('/', function(){return Redirect::to('login');});
  Route::get('login', function(){View::make();});
}else{
  Route::get('login', function(){return Redirect::to('/');});
  Route::get('/', function(){View::make();});
}

質問: laravel ルートを使用してこれを行うにはどうすればよいですか?

4

2 に答える 2

1

ここでは、グループ A は許可されておらず、グループ B は許可されています。したがって、ログインステータスを確認できます。

Route::get('login', function()
{
    if(Auth::user()) {
        return Redirect::to('admin');
    }

    return View::make('login');
});

すべての A グループ ページでAuth::user()を使用して、ユーザーをフィルタリングできます。

于 2013-09-18T12:56:24.477 に答える