私はlaravelプロジェクトに取り組んでおり、認証されたユーザーだけがそのページを閲覧できるようにいくつかのページへのアクセスを制限する必要があります。これを行うにはLaravel 5ミドルウェアを使用してページへのアクセスを制限します
は、ミドルウェア作成:php artisan make:middleware OnlyRegisteredUser
をして
'onlyregistereduser' => \App\Http\Middleware\OnlyRegisteredUser::class,
としてApp\Http\kernel.php
内部$routemiddleware
でそれを登録し、このクラスです。
Route::get('admin/poem', ['middleware' => 'onlyregistereduser:admin', 'uses'=>'[email protected]']);
admin
が私のミドルウェアに渡されたパラメータである:
public function handle($request, Closure $next, $right=null)
{
$user = $request->user();
if ($user && $user->onlyregistereduser()) {
return $next($request);
}
return redirect('auth/login');
}
ログインしていない場合、それはここに私のルートであるauth/login
にユーザーをリダイレクトします。次のように `列挙型」列を持っている私のユーザーモデルから取得されます。create例えば、私のコントローラメソッドの一部へのアクセスを制限する
public function up()
{
Schema::create('users', function (Blueprint $table) {
//...
$table->enum('rights', ['admin', 'guest'])->nullable();
// ...
});
}
示すように、私は私のPoemsController
にコンストラクタを追加しました:
public function __construct()
{
$this->middleware('onlyregistereduser');
}
私の問題は今、これは、ログインページに私をリダイレクトするようにPoemsController
にすべての単一のルートを引き起こしたことです。ログインしても、私は訪問予定のページには連れません。代わりに私のホームページに行く。私が望むのは、一部のコントローラメソッドだけにアクセスを制限することであり、ユーザーのログイン後に意図したページにリダイレクトすることはできません。 私の問題を理解していただければ幸いです。 ご協力いただければ幸いです。