2017-11-29 8 views
0

나는 설명하려고 노력할 것이다. 전자 상거래 애플리케이션을 개발하고 백엔드 승인을 제공하기 위해 모델 (제품 모델)에 정책을 적용했습니다.모델의 정책 및 특정보기에서 권한 부여를 피하는 방법

모든 사용자가 제품을 볼 수있는 프런트 엔드보기에서 동일한 제품 모델을 사용할 때 문제가 발생합니다.

정책은 경로보기가 보호되어 있는지 여부에 관계없이 모든 모델에 적용되며 인증 정책이없는 모델에서 정보를 검색하는 일부보기 (예 : frontend> 제품 목록)를 남길 수있는 방법을 찾을 수 없습니다.

예 : 백엔드에서보기에 적용된 정책의 :

public function view(User $user) 
{ 
    $method = (string)$this->ability; 
    if ($user->hasRole($this->Model) === null) { 
     return 0; 

    } 
    return $user->hasRole($this->Model)->$method; 
} 

I가 사용자에게 허가를 요청하지 않고 프론트 엔드 제품을 나열 제품 정책에서 다른 공용 함수를 작성하는 것입니다 필요한 것은.

감사합니다.

답변

1

인증되지 않은 사용자가 제품보기에 액세스 할 수있게하는 생성자 함수를 컨트롤러에 만들 수 있습니다. 다음 스 니펫은 destroy (세션 삭제, 로그 아웃) 기능을 제외하고 컨트롤러의 모든 기능에 대한 액세스를 제공합니다.

public function __construct() 
{ 
    $this->middleware('guest', ['except' => 'destroy']); 
} 

올바른 방향으로 안내해주세요.

+0

감사합니다. 뷰가 렌더링되는 미들웨어 게스트가 있지만 정책 때문에 제품 정보가 아닌 문제의 일부를 해결합니다. –