2016-09-12 2 views
0

POSTリクエストが送信されたときに、私の各ページにログアウトを追加しようとしています。現在、私のコードは動作していますが、私はすべてのルートに対してそれを定義する必要があります。メインルートファイルに$app->post()があると、サイトのすべてのページに影響する方法がありますか?1つの機能しかないすべてのページのスリム3ポスト

例えば、私はちょうど私のログアウト作業を取得するために、このコードを追加する必要が私の管理ページ上:

$app->post('/admin', function ($request, $response) { 
    // Define POST data 
    $params = $request->getParams(); 

    // Logout User 
    if ($params['logout']) { 
     // Logout 
     User::logout(); 

     // Redirect to login page 
     return $response->withHeader("Location", "/"); 
    } 
}); 

私は、このようなsite.com/adminのような単一のファイルや他のすべてのページにこれを追加することができます方法はありますsite.com/panelこれにアクセスできますか?

ありがとうございました

答えて

0

ミドルウェアを使用して解決しました。

// Middleware to logout 
$app->add(function ($request, $response, $next) { 
    // Define POST data 
    $params = $request->getParams(); 

    // Logout User 
    if ($params['logout']) { 
     // Logout 
     User::logout(); 

     // Redirect to login page 
     return $response->withHeader("Location", "/"); 
    } 

    // Return next middleware 
    return $next($request, $response); 
}); 
+0

この度、「ログアウト」を使用しているすべてのリクエストは、投稿だけでなくログアウトします。意図的? – danopz

+0

@copynpasteログアウトするボタンが押された場合は、 'logout'の値を持つものを取得する唯一の方法です。 –

関連する問題