現在、新しいLaravel 5を試し、認証(登録/ログイン)を実行しています。
コントローラーで認証されたユーザーを取得するために、現在Guard
をコントローラーアクションに挿入します。
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
class ClientController extends Controller {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index(Guard $auth)
{
return view('client.index', ['user' => $auth->user()]);
}
...
最初の質問:これが推奨される方法ですか?
2番目の質問:何らかの種類の役割/権限を実装するにはどうすればよいですか?何かのようなもの client.edit
、client.add
、... Larval 5はここで何らかの便利さを提供しますか?ルート/コントローラーアクションに必要な役割/許可をどのように設定しますか?
そのために自分のミドルウェアを書く必要があるかもしれないと考えています。問題へのアプローチ方法に関する提案はありますか?
Laravel 5にもう少し時間を費やした後、自分の質問に答えることができます。
Guard
を推奨する方法で注入しますか?いいえ:ビューでAuth
にアクセスする必要がある場合は、すでに次のようにできます。
@if( Auth::check() )
Current user: {{ Auth::user()->name }}
@endif
これは、Auth
ファサードを使用します。使用可能なすべてのファサードのリストは、config/app.php
の下のaliases:
にあります
コントローラにAuth
が必要な場合はどうすればよいですか?質問に示されているようにGuard
のインスタンスを挿入しても機能しますが、必要はありません。テンプレートで行ったように、Auth
ファサードを使用できます。
public function index()
{
if(\Auth::check() && \Auth::user()->name === 'Don') {
// Do something
}
return view('client.index');
}
L5は名前空間を使用しているため、ファサード名の前に\
が必要であることに注意してください。
L5の新しい認証メカニズムを使用してアクセス許可/ロールが必要です:新しいミドルウェアを使用して軽量のアクセス許可モジュールを実装しました。これはLaraguardと呼ばれます。 Githubでそれをチェックして、あなたの考えを教えてください: https://github.com/cgrossde/Laraguard
PDATE:完全を期すために、さらに2つのプロジェクトに言及したいと思います。 DBにロールと権限を保存し、Laraguardと完全に連携するか、単独で動作するために必要なすべてを提供します。
独自のカスタム認証を作成する場合は、ユーザーモデルをLaravel 5からすべての依存関係に維持する必要があります。コントローラーにユーザーをログインできるようになったら、忘れないでください。 (使用認証;)コントローラーの名前空間の後。