在 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.

  1. 创建中间件:
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);
    }
}
  1. 将其添加到 app\Http\Kernel.php:
protected $routeMiddleware = [
    'admin' => 'App\Http\Middleware\Admin',
];
  1. 在路由中使用中间件:
Route::group(['middleware' => ['admin']], function() {
    // your route
});