2016-07-22 124 views
0

我已经设置了Laravel的内置身份验证功能,但它没有管理员权限。我一直在想办法做到这一点,但很多教程似乎有点重要。我想要的是简单,安全的解决方案,利用我已有的用户表。具有Laravel 5.2身份验证的简单管理员用户

我看这个:https://laracasts.com/discuss/channels/laravel/user-admin-authentication

指令来自几个用户,这是一个有点难以遵循。我为我的用户数据库设置了一个“isAdmin”列。我有一个中间件的管理员,但我不知道如何从这里开始。

回答

1

如果我没有忘记任何东西,这应该就够了。

Kernel.php:

protected $routeMiddleware = [ 
    //... 
    'isAdmin' => \App\Http\Middleware\IsAdminMiddleware::class, 
]; 

IsAdminMiddleware:

public function handle($request, Closure $next) 
{ 
    if(!\Auth::user()->isAdmin){ 
     return Redirect::route('index'); 
    } 

    return $next($request); 
} 

routes.php文件:

Route::group(['middleware' => ['auth', 'isAdmin']], function() { 
    Route::get('/', '[email protected]')->name('admin.index'); 
    Route::get('/add-user', '[email protected]')->name('admin.addUser'); 
}); 

懒惰溶液,不推荐使用:

在你AdminController,添加以下内容:

public function __construct(){ 
    if(!\Auth::user()->isAdmin){ 
     dd('Redirect user or whatever, this is where all but admin gets stucked'); 
    } 
} 
+0

这就是我得到: FatalThrowableError在IsAdmin.php线17: 级 '应用程序\ HTTP \中间件\验证' 未找到 – Jubiki

+0

使用反斜杠验证之前: :用户() - > isAdmin。我已经更新了这个例子。 – SebHallin

+0

它运行良好,但现在我无法访问我为管理员创建的页面。我不确定它是否认识到我是管理员?我的数据库表格作为isAdmin的布尔列。 1为真,0为假,对吗?为什么它不认可我是管理员? – Jubiki

相关问题