如何将 laravel 5.1 中间件参数用于多个身份验证和受保护的路由?
How can I use laravel 5.1 middleware parameter for multiple auth and protected routes?
我是 laravel 5.1 的新手。
如何使用中间件参数来保护我的管理路由不被用户看到?
像这样:
Route::group(['middleware' => 'auth:admin'], function()
/* Admin only Routes*/
{
//////
});
我的 "users" table 中有一个字段 "role" 有两个值:
- 1 个管理员
- 2 个用户
在我的应用程序中,用户有他们的受保护路线。
我不想使用包。
你可以这样做。注入 Guard class,然后用它来检查用户。你真的不需要传递参数。只需将您的中间件命名为 'admin' 或其他名称即可。下面的中间件会检查当前用户的角色是否是admin,如果不是,则重定向到另一个路由。你可以在失败时做任何你喜欢的事情。
<?php
namespace Portal\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Admin
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($this->auth->user()->role != 'admin') {
return redirect()->route('not-an-admin');
}
return $next($request);
}
}
如果你确实想传递参数,你可以这样做:
public function handle($request, Closure $next, $role)
{
if($this->auth->user()->role != $role) {
return redirect()->route('roles-dont-match');
}
return $next($request);
}
我是 laravel 5.1 的新手。 如何使用中间件参数来保护我的管理路由不被用户看到? 像这样:
Route::group(['middleware' => 'auth:admin'], function()
/* Admin only Routes*/
{
//////
});
我的 "users" table 中有一个字段 "role" 有两个值:
- 1 个管理员
- 2 个用户
在我的应用程序中,用户有他们的受保护路线。 我不想使用包。
你可以这样做。注入 Guard class,然后用它来检查用户。你真的不需要传递参数。只需将您的中间件命名为 'admin' 或其他名称即可。下面的中间件会检查当前用户的角色是否是admin,如果不是,则重定向到另一个路由。你可以在失败时做任何你喜欢的事情。
<?php
namespace Portal\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class Admin
{
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($this->auth->user()->role != 'admin') {
return redirect()->route('not-an-admin');
}
return $next($request);
}
}
如果你确实想传递参数,你可以这样做:
public function handle($request, Closure $next, $role)
{
if($this->auth->user()->role != $role) {
return redirect()->route('roles-dont-match');
}
return $next($request);
}