2017-04-07 85 views
-1

我在laravel 5.4中使用make:auth方法。現在,我想更改「註冊」選項的行爲。我只想爲已經以管理員登錄的用戶使用註冊選項,而其他用戶則應禁用註冊選項。原始版本允許您在進行身份驗證之前進行註冊。我想使用這個註冊選項讓管理員添加新用戶。 我試過認證用戶的選項,並重定向到home.blade.php註冊頁面,但它不起作用。我正在爲我的新項目學習laravel.So任何有關如何進行的專家建議。只有登錄後才啓用註冊頁面 - Laravel 5.4

回答

2

目前有在App\Http\Controllers\Auth\RegisterController

public function __construct() 
{ 
    $this->middleware('guest'); 
} 

這這樣的方法目前正在這樣只有誰是登錄才能訪問該頁面的用戶。相反,讓我們改變,以滿足您的標準之一的需求:

public function __construct() 
{ 
    $this->middleware('auth'); 
} 

大,現在他們必須登錄才能訪問它。但是做一名管理員呢?讓我們作出這樣的中間件,現在:

php artisan make:middelware AdminMiddleware 

現在,讓我們打開該文件在App\Http\Middleware\AdminMiddleware並作出一些調整。

注意我必須在這裏對你的代碼庫做一些假設。

public function handle($request, Closure $next) 
{ 
    if (auth()->check() && auth()->user()->hasRole('admin')) { 
     return $next($request); 
    } 

    return redirect('/'); 
} 

接下來,讓我們註冊我們的應用程序中間件。打開App\Http\Kernel.php和滾動到底部:

protected $routeMiddleware = [ 
    'admin' => \App\Http\Middleware\AdminMiddleware::class, // <--add this 
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 
    'can' => \Illuminate\Auth\Middleware\Authorize::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
]; 

最後,讓我們回到App\Http\Controllers\Auth\RegisterController和更新我們的construct功能,才能使用這個中間件:

public function __construct() 
{ 
    $this->middleware(['auth', 'admin']); 
} 

現在,您的用戶必須先登錄,他們也必須具有admin的角色。

確實有更短的方法來完成這項工作,但這是一種我喜歡的方法,因爲它可以幫助您重複自己(DRY編程)。

0

這真的helped.changes在App\Http\Middleware\AdminMiddleware

use Illuminate\Support\Facades\Auth;              
    public function handle($request, Closure $next) 
    { 
    if (Auth::check() && Auth::user()->is_admin == 1) 
    { 
     return $next($request); 
    }  

    return redirect('home'); 

    } 

擁有的用戶名爲「is_admin」字段table.And在文件中的其他變化如你所說。 現在在公共頁面(http://localhost/larashop/public/),這裏登錄和註冊這兩個鏈接都可見。 1.當我點擊登錄時,它重定向到登錄頁面:在這裏我輸入一個管理員電子郵件ID,它不顯示我的註冊選項,不爲非管理員用戶。 2.當我點擊註冊,它重定向到登錄頁面: 在這裏,我輸入管理員電子郵件ID,它重定向到註冊頁面和非管理員用戶它重定向到主頁。這工作正常。 因此,登錄鏈接不能按預期工作。任何建議

`