2017-05-18 6 views
1

예를 들어 내 User 클래스에는 users 테이블 열에서 사용자의 역할 값을 확인하는 isAdmin 함수가 있습니다. 따라서이 경우에는 middlewares를 사용할 필요가 없습니다. 나는 사용자가 내보기에 이런 일을 할 것입니다 내 응용 프로그램에서 특정 게시물의 소유자인지 확인하려면
:Laravel : 왜 내가 미들웨어를 사용해야합니까?

@if(Auth::user()->id == $user->id) //$user is the passed user to the view 
    <p>I am the owner of the post</p> 
@elseif(Auth::guest()) 
    <p>I'm a visitor</p> 
@else 
    <p>I'm a registered user visiting this post</p> 


내가에게 건가요 오른쪽 또는 내가 뭔가 잘못하고 있어요?

+0

에서

나는 2 주 전에 그것을 배우기 시작하는 laravel 전문가가 아니지만, 난 당신이 정확하지 않습니다 생각합니다. 미들웨어는 다른 일보다 먼저 일을합니다. 실패하지 않으면 실행이 정상적으로 계속되거나 어쩌면 일부 IP 확인 또는 프록시를 수행합니다. 당신의 의견이 옳지 않다고 생각합니다.'$ post' (이 모델이 존재한다면, 꼭해야합니다) owner/user_id를'$ post-> user_id' 또는 이와 비슷한 것으로 확인해야합니다. – matiaslauriti

+0

https://philsturgeon.uk/php/2016/05/31/why-care-about-php-middleware/ –

답변

3

미들웨어의 큰 장점 중 하나는 route group에 로직 세트를 적용 할 수 있으며 각 컨트롤러 메소드에 해당 코드를 추가 할 필요가 없다는 것입니다.

Route::group(['prefix' => '/admin', 'middleware' => ['admin']], function() { 
    // Routes go here that require admin access 
}); 

컨트롤러에서 관리자인지 확인하기 위해 추가 할 필요가 없습니다. 미들웨어 검사를 통과 한 경우에만 경로에 액세스 할 수 있습니다.

+1

이 답변을 주셔서 감사합니다 .. 그래서 **/admin ** (EX :/admin/dashboard 또는/admin/userslist/blahblah) 이전에 미들웨어를 통과해야합니까? –

+0

예, 루트 그룹이 자동으로 수행합니다. –

1

미들웨어 컨트롤러 동작 호출 전에 호출되므로 필터 요청으로 사용되거나 일부 조건에 따라 요청에서 발생하지 않는 외부 데이터를 추가합니다.

한 가지 간단한 예를 들어 봅시다.

@if(Auth::user()->id == $user->id) //$user is the passed user to the view 
    <p>I am the owner of the post</p> 
@elseif(Auth::guest()) 
    <p>I'm a visitor</p> 
@else 
    <p>I'm a registered user visiting this post</p> 

사용자가 소유자, 방문자 또는 손님임을 표시하려면 코드를 작성해야하는 횟수를 만드시겠습니까? 내 생각에 모두 컨트롤러 또는 보기 컨트롤러 작성시 코드를 작성하여 미들웨어에 표시하고 표시하려는 경로 그룹에 미들웨어를 적용하는 것이 좋습니다. 그래서 '지금 당신의 컨트롤러에 당신이 $user_type에 액세스하고 볼에 전달할 수있는 미들웨어

public function handle($request, Closure $next) 
{ 
    @if(Auth::user()->id == $user->id) 
    $user_type = "<p>I am the owner of the post</p>"; 
    @elseif(Auth::guest()) 
    $user_type = "<p>I'm a visitor</p>"; 
    @else 
    $user_type = "<p>I'm a registered user visiting this post</p> "; 

    $request -> attributes('user_type' => $user_type); 

    return $next($request); 
} 

에서

. 당신의보기

{{ $user_type }}