私はすべてのリクエストの前にユーザーを認証し、アプリ全体の始めにそれを適用するミドルウェアを作った。Silexの認証ミドルウェアからログインルートを除外する方法は?
$app->before(function($request, $app) { Auth::authenticate($request, $app); });
しかし、それはまた、この問題を解決する方法ログインルートに適用されますか? これはRest APIです。
私はすべてのリクエストの前にユーザーを認証し、アプリ全体の始めにそれを適用するミドルウェアを作った。Silexの認証ミドルウェアからログインルートを除外する方法は?
$app->before(function($request, $app) { Auth::authenticate($request, $app); });
しかし、それはまた、この問題を解決する方法ログインルートに適用されますか? これはRest APIです。
すべてのルートより前にミドルウェアが実行されています。だから、あなたはおそらくこのようなルートを持っているでしょう:
$routes->match('/login', function() use ($app) {
// Login etc.
});
あなたは、POSTのGETや何でも使っています。ミドルウェアは、ルートが実行される前に常に実行されます。したがって、すべてのルートで動作するので、ミドルウェアはログイン前に適用されます。
あなたは、このようなログインルートの後にミドルウェアを実行することによってそれを修正できます。この上
$routes->match('/login', function() use ($app) {
// Login etc.
})
->after($after);
詳細はhereを見つけることができます!
ミドルウェアを変更して、ユーザーが既にログインしているかどうかを最初に確認することもできます。そうであれば、認証を実行し、そうでなければ何もしない。
$app->before(function($request, $app) {
if user is logged in {
Auth::authenticate($request, $app);
}
});
私はこれがあなたを助けてくれることを願っています。あなたが仕事をしているときに完了したと印を付けることを忘れないでください。それ以外の場合は、コメントを残すか質問を編集してください。
あなたの最後の例は、私がいつもそれをやったことです。 – Maerlyn
最後の例は、ログインしていないと認証されないことを意味します。どちらの場合も認証したいのですが、ログインルートが起動し、認証ヘッダーとトークンが必要なときに問題が発生します。ログインルートを除外するために、私は自分自身を繰り返してすべてのルートに対して手動でやりたいとは思わないが、私の問題はログインルートだ –