0 レビュー
1 回答
php-Laravel 5.2のログインロールでルートを保護する方法は?
私はlaravel5.2を使用しています。 ユーザーのログイン時に問題が発生しました。URLを知っていれば、管理者ページを開くことができます。以下は私のナビゲーションバーメニューです:
@if(Session::get('Mem_Username') == 'Guest')
<li>
<a href="{{ url ('Client') }}"><i class="fa fa-building fa-fw"></i> Client List</a>
</li>
@endif
@if(Session::get('Mem_Role') == '1')
<li>
<a href="{{ url ('Lead') }}"><i class="fa fa-th-list fa-fw"></i> Leads</a>
</li>
<li>
<a href="{{ url ('Client') }}"><i class="fa fa-building fa-fw"></i> Client List</a>
</li>
@elseif(Session::get('Mem_Role') == '2')
<li>
<a href="{{ url ('Lead') }}"><i class="fa fa-th-list fa-fw"></i> Leads</a>
</li>
@endif
そして私はすでにこれを各コントローラーに入れています
public function __construct()
{
$this->middleware('auth');
}
ちなみに、Sessionを使用して Authenticate.php
ファイルを次のように変更しています。
public function handle($request, Closure $next, $guard = null)
{
if(Session::has('Mem_Username')){
}
else{
return redirect()->guest('');
}
return $next($request);
}
わからない
0
レビュー
答え :
解決策:
php artisan make :middleware AdminMiddleware
次の場所に新しいミドルウェアが作成されます: App/Http/Middleware
ミドルウェアを開き、コードを配置します:
public function handle($request, Closure $next)
{
if(!auth->user()->isAdmin()){
abort(404);
}
return next($request);
}
ユーザーモデルでは、現在のユーザーが管理者であるかどうかを確認する isAdmin()
メソッドがあることを確認してください。
ミドルウェアの登録
ミドルウェアを作成したので、ミドルウェアが存在することをアプリケーションに通知する必要があります。すべてのリクエストでミドルウェアを実行する場合は、app/Http/kernel.phpに移動し、ミドルウェア' isAdmin
'をカーネルクラス$middleware propertyに追加します。
。
protected $middleware = [
...
\App\Http\Middleware\AdminMiddleware::class
];
ミドルウェアを一部のルートでトリガーする場合は、ミドルウェアに名前を付け、それを参照メカニズムとして使用して、ミドルウェアを一部のルートに追加できます。ミドルウェアに名前を付けるには、 app/Http/kernel.php
にいる間に、keyedプロパティを $routeMiddleware
配列に追加します。配列キーはミドルウェアの名前ですが、値はミドルウェアの isAdmin
である必要があります。
protected $routeMiddleware = [
..。
'isAdmin' => \ App \ Http \ Middleware \ AdminMiddleware :: class、
..。
];
次に、このミドルウェアを使用してルートを保護できます。
Route:get('someurl'、'Controller')-> middleware('isAdmin');
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。