0
我在5.0中有另一個laravel應用程序的中間件類,它將在用戶登錄時調用,我想在5.2中的另一個應用程序中使用,這裏是類。laravel 5.2如何在每次登錄時調用中間件?
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Routing\Middleware;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\AssignedRoles;
class Admin implements Middleware {
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* The response factory implementation.
*
* @var ResponseFactory
*/
protected $response;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @param ResponseFactory $response
* @return void
*/
public function __construct(Guard $auth,
ResponseFactory $response)
{
$this->auth = $auth;
$this->response = $response;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->check())
{
$admin = 0;
$user_roles = AssignedRoles::join('roles','role_user.role_id','=','roles.id')
->where('user_id', $this->auth->user()->id)->select('roles.is_admin')->get();
foreach($user_roles as $item)
{
if($item->is_admin==1)
{
$admin=1;
}
}
if($admin==0){
return $this->response->redirectTo('/');
}
return $next($request);
}
return $this->response->redirectTo('/');
}
}
我在快樂kernel.php已經添加
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\Admin::class,
'age' => \App\Http\Middleware\Age::class,
];
我在尋找線索的應用程序在5.0如何調用中間件,但仍然不知道,這裏是路線:
Route::get('/', '[email protected]');
Route::get('home', '[email protected]');
Route::get('about', '[email protected]');
Route::get('contact', '[email protected]');
Route::pattern('id', '[0-9]+');
Route::get('news/{id}', '[email protected]');
Route::get('video/{id}', '[email protected]');
Route::get('photo/{id}', '[email protected]');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
if (Request::is('admin/*'))
{
require __DIR__.'/admin_routes.php';
}
但是我怎樣才能每次運行它在登錄?
這是正確的。 –