在 Laravel 5 中有两种类型的用户
Having two types of users in Laravel 5
我想知道是否有更好的方法来处理不同类型用户的身份验证用户。
我有一个基本用户和一个管理员用户。基本用户显然只能访问基本页面,管理员用户需要访问基本用户无法访问的其他页面。
我一直在做的是:我在 table 中创建了一个 super_user 列并添加:
if(Auth::user()->super_user == 0) {
return Redirect::to('/')->with('error', 'You do not have permission to access this page');
}
我不希望基本用户能够访问的每个页面。现在,这行得通,但我开始将我的应用程序转换为 Laravel 5,我认为我可以采用不同的方式来处理这个问题。
在您的案例中处理用户角色的最佳方式是使用 Middleware.
- 创建中间件:
namespace App\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
* @return void
*/
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->getUser()->super_user) {
return redirect->to('/')
->with('error', 'You do not have permission to access this page');
}
}
return $next($request);
}
}
- 将其添加到
app\Http\Kernel.php
:
protected $routeMiddleware = [
'admin' => 'App\Http\Middleware\Admin',
];
- 在路由中使用中间件:
Route::group(['middleware' => ['admin']], function() {
// your route
});
我想知道是否有更好的方法来处理不同类型用户的身份验证用户。
我有一个基本用户和一个管理员用户。基本用户显然只能访问基本页面,管理员用户需要访问基本用户无法访问的其他页面。
我一直在做的是:我在 table 中创建了一个 super_user 列并添加:
if(Auth::user()->super_user == 0) {
return Redirect::to('/')->with('error', 'You do not have permission to access this page');
}
我不希望基本用户能够访问的每个页面。现在,这行得通,但我开始将我的应用程序转换为 Laravel 5,我认为我可以采用不同的方式来处理这个问题。
在您的案例中处理用户角色的最佳方式是使用 Middleware.
- 创建中间件:
namespace App\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
* @return void
*/
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->getUser()->super_user) {
return redirect->to('/')
->with('error', 'You do not have permission to access this page');
}
}
return $next($request);
}
}
- 将其添加到
app\Http\Kernel.php
:
protected $routeMiddleware = [
'admin' => 'App\Http\Middleware\Admin',
];
- 在路由中使用中间件:
Route::group(['middleware' => ['admin']], function() {
// your route
});