Laravel には工場出荷時にすでにユーザー認証システムが付属しています。routes.php を見てみましょう。削除されている場合は、以下を追加してください:
リーリーphpArtisan Route:list を使用して確認できます。ブラウザで /auth/login にアクセスすると、ログイン インターフェイスが表示されます。システムのデフォルトの app.blade.php で Google に関する内容をコメントアウトするのが最善です。そうしないと、おかしくなります。
登録、ログイン、またはパスワードを忘れた場合でも使用できます。
実際にユーザーの登録は送信後に失敗しましたが、larave は自動的に /home にジャンプしました。 tinker を使用して、ユーザーが作成されたかどうかを確認できます。
トレイトは実際に AuthAuthController で使用されます。トライアットとは何ですか? PHP は単一継承のみをサポートしており、トレイトは PHP5.4 で追加されました。トレイトは実際にはメソッドのセットをカプセル化したもので、別のクラスに含めることができます。抽象クラスと同様に、直接インスタンス化することはできません。
AuthAuthController にはトレイトへの参照があります:
コードをコピーします コードは次のとおりです:
AuthenticatesAndRegistersUsers を使用します;
彼を見つけて、登録後に彼がどのようにジャンプするかを見てみましょう。彼は、vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesAndregistersUsers.php のかなり奥深くに隠されています。すごいですね。
リーリーOK、登録後のジャンプをカスタマイズするには、redirectTo 属性を設定するだけです。 AuthAuthContotroller でこれを変更します:
コードをコピーします コードは次のとおりです:
protected $redirectTo = '記事';
最初に /auth/logout を使用してログアウトします。何か問題が発生しても心配しないでください。今回は、新しいユーザーを作成するための auth/register に再度アクセスします。大丈夫なはず。
再度ログアウトし、ログインを使用してログインします。
これで、form_partial に一時的に設定された非表示フィールドを削除し、コントローラーを変更できます:
リーリー記事を追加し、tinker を使用してチェックしてください。
ミドルウェア
もちろん、少なくともログインすることによってのみ、誰でも記事を公開できるようにすることは望ましくありません。コントローラーに保護を追加します:
上記のコードは機能しますが、保護する必要があるすべてのメソッドで上記の処理を実行する必要があります。幸いなことに、これはあまりにも愚かです。
ミドルウェアは、パイプライン内の特定の瞬間に処理される処理パイプラインとして理解できます。この瞬間はリクエストまたはレスポンスになります。ミドルウェアの処理ルールによっては、リクエストがリダイレクトされたり、渡されたりする場合があります。
app/http/middleware には 3 つのミドルウェアが含まれています。詳しく見てみると、Closure $next が次のミドルウェアを表しています。
app/http/kernel.phpにミドルウェアを登録します。 $middleware セクションでは、すべての http を処理するミドルウェアを宣言し、$routeMiddleware はルーティングのみを処理します。これらのミドルウェアの 1 つ以上を使用することを明示的に宣言する必要があります。
ArticlesController 全体を保護したいと仮定して、コンストラクターにミドルウェアを直接追加します。
リーリーこれで、どのメソッドも保護されます。
しかし、おそらくコントローラー全体を保護することは望ましくありません。そのメソッドの 1 つまたは 2 つだけを保護する場合はどうでしょうか?次のように処理できます:
リーリーコントローラーのコンストラクターにミドルウェアを導入する必要はなく、ルート内で直接宣言できます:
コードをコピーします コードは次のとおりです:
Route::get('about', ['middleware' => 'auth', 'uses' => 'PagesController@about']);
「IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode」などの kernel.php で提供されるシステム ミドルウェアを使用すると、たとえば、システムがオンラインであっても、処理のために一定期間一時的にシャットダウンする必要がある場合に、メンテナンス モードに入ることができます。コマンドラインで処理してください。このミドルウェアが何をするのか見てみましょう:
コードをコピーします コードは次のとおりです:
php 職人ダウン
Web サイトにアクセスすると、URL リクエストがすぐに返されることがわかります。オンラインウェブサイト:
コードをコピーします コードは次のとおりです:
php職人アップ
独自のミドルウェアを作ってみましょう:
コードをコピーします コードは次のとおりです:
php 職人の make:ミドルウェア デモ
次にコードを追加します:
リーリーすべてのリクエストにミドルウェアを使用したい場合は、それを kernel.php の $middleware に登録する必要があります:
リーリーこれでテストできるようになりました。/articles/create?foo=bar にアクセスすると、ホームページにリダイレクトされるとします。
この表示ミドルウェアを削除して、実際に動作するミドルウェアを作成しましょう。このページは管理者がアクセスできる必要があるとします。
コードをコピーします コードは次のとおりです:
php 職人 make:middleware RedirectIfNotAManager
処理コードを追加しましょう:
public function handle($request, Closure $next) { if (!$request->user() || !$request->user()->isATeamManager()) { return redirect('articles'); } return $next($request); }
下面修改我们的模型:
public function isATeamManager() { return false; }
简单起见,我们直接返回false。这次我们把中间件放置在 kernel.php 中的$routeMiddleware 中。
protected $routeMiddleware = [ ... 'manager' => 'App\Http\Middleware\RedirectIfNotAManager', ];
我们做一个测试路由测试一下:
Route::get('foo', ['middleware' => 'manager', function() { return 'This page may only be viewed by manager'; }]);
guest身份访问或者登录身份访问都会返回主页,但是如果修改 isATeamManager() 返回 true,登录身份访问可以看到返回的信息。
以上就是本文所述的全部内容,希望对大家熟悉Laravel5框架能够有所帮助。