2017-10-23 17 views
0

저는 Laravel에서 정책을 사용하는 것이 처음입니다. Laravel을 사용하여 API 개발을 배우고 있습니다. 내 코드는 다음과 같습니다.Laravel에서 정책 사용하기 5.5.14

TopicPolicy.php

<?php 
namespace App\Policies; 

use App\User; 
use App\Topic; 
use Illuminate\Auth\Access\HandlesAuthorization; 

class Topicpolicy 
{ 
    use HandlesAuthorization; 

    public function update(User $user, Topic $topic) 
    { 
     return $user->ownsTopic($topic); 
    } 

    public function destroy(User $user, Topic $topic) 
    { 
     return $user->ownsTopic($topic); 
    } 
} 

AuthServiceProvider.php

<?php 

namespace App\Providers; 

use Laravel\Passport\Passport; 
use Illuminate\Support\Facades\Gate; 
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; 

class AuthServiceProvider extends ServiceProvider 
{ 
    protected $policies = [ 
     'App\Model' => 'App\Policies\ModelPolicy', 
    ]; 

    public function boot() 
    { 
     $this->registerPolicies(); 

     Passport::routes(); 
    } 
} 

TopicController.php

<?php 

namespace App\Http\Controllers; 

use App\Topic; 
use App\Post; 
use Illuminate\Http\Request; 
use App\Http\Requests\StoreTopicRequest; 
use App\Transformers\TopicTransformer; 
use League\Fractal\Pagination\IlluminatePaginatorAdapter; 

class TopicController extends Controller 
{ 
    public function destroy(Topic $topic) { 
     $this->authorize('destroy',$topic); 
     $topic->delete(); 
     return response(null,204); 
    } 
} 

오류 This action is unauthorized.이 나타납니다. 나는 정책 사용법을 모른다. 누구라도 Laravel 5.5.14에서 정책을 사용하도록 안내 할 수 있습니까?

답변

0

AuthServiceProvider 클래스에서 정책 aray에 정책을 등록해야합니다. Laravel 문서는 당신이 당신의 API를 호출 할 수 있도록하는 데 사용할 수 있도록 두 번째 앱에서 개인 토큰을 얻을 start

protected $policies = [ 
    \App\Topic::class => \App\Policies\Topicpolicy::class 
] 

에 좋은 장소입니다. 여권을 사용하고 여권은 Vue 구성 요소를 사용할 준비가 된 상태로 시작됩니다. 동일한 응용 프로그램 내에서 API를 사용하려면 here을 확인하십시오.

정책 내에 HandlesAuthorization 특성을 사용하여 수행하려고하는 것이 확실하지 않습니다. Laravel은 middleware을 사용하고 있습니다.