ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 5 フレームワーク学習ユーザー認証、laravel5 フレームワーク認証_PHP チュートリアル

Laravel 5 フレームワーク学習ユーザー認証、laravel5 フレームワーク認証_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:57:30
オリジナル
819 人が閲覧しました

Laravel 5 フレームワークでユーザー認証を学習する、laravel5 フレームワーク認証

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框架能够有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/981353.htmlTechArticleLaravel 5框架学习之用户认证,laravel5框架认证 Laravel 出厂已经带有了用户认证系统,我们来看一下 routes.php,如果删除了,添加上: Route::...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート