私はLaravelにWebとapiルートの両方で同じメソッドを使用しているプロジェクトを持っています。だから、例えば私は、次のを持っているでしょう:Laravel - ウェブルートとAPIルートの両方で使用されるメソッドのユーザーの詳細を取得する
//routes/web.php
Route::post("/import-results", "[email protected]");
//routes/api.php
Route::post("/import-results/{auto}", "[email protected]");
のでかかわらずdoImport()関数はImportContollerに呼び出されますルートの。
インポート・コントローラは、このような機能を持っている(関数内の検証がありますが、私は簡単にするためにそれを取り出しています):
public function doImport($auto = null){
$importData = new DataImport();
$importData->type = $_POST['type'];
$importData->data = $_POST['data'];
$importData->user = Auth::user()->name;
$importData->save();
$data = [
"success" => true,
"message" => "Message Here!"
]
if($auto){
return json_encode($data);
}else{
return view('import-message', $data);
}
}
あなたは、このメソッドは、インポートされたユーザを識別するためにAuth::user()->name;
を使用して見ることができるようにデータ。私がログインしていて普通のウェブルートを使用している場合は問題ありませんが、APIを使用していて、セッションが作成されていない基本認証を使用していて、APIルートが呼び出されてもセッションが持続しないようにしたい場合はどうでしょうか?
APIルートを呼び出すときにユーザー情報を取得するにはどうすればよいですか?
また、ウェブルートの場合、私はLDAPを使用しているのでログインをカスタマイズしましたが、本質的にはAuthenticatesUsers特性を持つクラスで$this->guard()->login($user, false);
を実行することによってログインが行われます。
APIルートでもこれを行うことができますが、セッションが作成されますが、要求が終了したらこのセッションをクリアするにはどうすればよいですか?または、より良い方法がありますか?
あなたは認証のためのセッションを必要としません..トークンの認証があります、それでも認証システムを使用することができます – lagbox
@lagbox私はもっと説明するために自分の投稿を更新しました。もし私が '$ this-> guard() - > login($ user、false);'を実行すると、apiルートのためにセッションが作成されます。これは問題ありませんが、要求の最後にそのセッションを終了する必要があります。私はAPIを呼び出すシステムに実装することが不可能であるため、apisにトークン認証を使用したくありません。その基本的なHTTP認証を使用しています。 – SamBremner
authがすでに処理できる... https://laravel.com/docs/5.3/authentication#stateless-http-basic-authentication – lagbox