2017-04-07 1 views
-1

laravel 5.4에서 make : auth 메소드를 사용하고 있습니다. 이제 Register 옵션의 동작을 변경하려고합니다. Admin으로 로그인 한 사용자에 대해서만 등록 옵션을 사용하고 다른 사용자에게는 등록 옵션을 사용하지 않아야합니다. 원래 버전을 사용하면 인증되기 전에 등록 할 수 있습니다. 이 등록 옵션을 사용하여 관리자가 새 사용자를 추가하도록하십시오. home.blade.php에서 페이지를 등록하도록 사용자 인증 및 리디렉션 옵션을 시도했지만 작동하지 않습니다. 내 새 프로젝트에 대한 laravel을 배우고 있습니다. 진행 방법에 대한 전문가 조언. 이 페이지에 액세스 할 수 있습니다 로그인하지 사용자 만 있도록로그인 한 후에 만 ​​등록 페이지 사용 - 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 프로그래밍).

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'); 

    } 

App\Http\Middleware\AdminMiddleware 당신이 말한대로 사용자의 'is_admin'라는 이름의 필드가 파일에 다른 변화를 table.And 가지고에

0

은 정말 helped.changes. 공개 페이지 (http://localhost/larashop/public/)에 로그인 및 등록 두 링크가 모두 표시됩니다. 1. 로그인을 클릭하면 로그인 페이지로 리디렉션됩니다. 여기에 관리자 전자 메일 아이디를 입력합니다. 관리자가 아닌 사용자도 등록 옵션을 표시하지 않습니다. 2. 등록을 클릭하면 로그인 페이지로 리디렉션됩니다. 여기에 admin email id를 입력하면 등록 페이지로 리디렉션되고 비 관리자 사용자의 경우 홈 페이지로 리디렉션됩니다.이 작업은 정상적으로 작동합니다. 로그인 링크가 예상대로 작동하지 않습니다. 제안 사항 :

` 
관련 문제