我是使用Laravel政策的新手。我正在使用Laravel学习API开发。我的代码就像风箱一样。
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 :(得分:0)
在AuthServiceProvider类中,您必须在策略aray中注册策略。 Laravel文档是start
的好地方protected $policies = [
\App\Topic::class => \App\Policies\Topicpolicy::class
]
其次从您的应用中获取个人令牌,以便您可以使用它来拨打您的API。您使用护照和护照附带随时可以使用Vue组件来帮助您启动。如果您想在同一个应用程序中使用api,请检查here。
我不确定您尝试使用策略中的HandlesAuthorization特征进行帮助。由于这个原因,Laravel有一个middleware供我们使用。