Tha*_*Dao 1 php laravel laravel-5
我定义了PostPolicy.php
处理谁可以访问操作。
我正在尝试处理更新帖子的 PUT 请求,但它似乎无法正常工作。
namespace App\Policies;
use App\Models\Users;
use App\Models\Posts;
use Illuminate\Auth\Access\HandlesAuthorization;
class PostPolicy
{
use HandlesAuthorization;
public function view(Users $user, Posts $posts)
{
return true;
}
public function create(Users $user)
{
return true;
}
public function update(Users $user, Posts $posts)
{
return true; //$user->id === $posts->user_id;
}
public function delete(Users $user, Posts $posts)
{
return $user->id === $posts->user_id;
}
}
Run Code Online (Sandbox Code Playgroud)
我在以下位置注册了此政策AuthServiceProvider.php
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
App\Models\Posts::class => App\Policies\PostPolicy::class,
];
Run Code Online (Sandbox Code Playgroud)
我的路线:
Route::put('post/update/{id}', 'CMS\PostController@update');
Run Code Online (Sandbox Code Playgroud)
最后,这是我的控制器
namespace App\Http\Controllers\CMS;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use App\Models\Posts as PostModel;
use LRedis;
use Illuminate\Http\Request;
class PostController extends BaseController
{
public function __construct()
{
}
public function update (Request $request, PostModel $postModel) {
$this->authorize('update', $postModel);
}
public function subcribe () {
}
}
Run Code Online (Sandbox Code Playgroud)
当我提交表单时,我收到错误Method [authorize] does not exist on [App\Http\Controllers\CMS\PostController].
我正在制作我的演示我正在按照文档。
我有什么错?我错过了任何正在进行的事情吗?
这authorize
方法由特征提供Illuminate\Foundation\Auth\Access\AuthorizesRequests
。
您可以直接将此特征添加到您的控制器中,也可以让您的控制器扩展 Laravel ( App\Http\Controllers\Controller
) 附带的默认控制器,因为它已经具有此特征(以及DispatchesJobs
和ValidatesRequests
)。
归档时间: |
|
查看次数: |
3128 次 |
最近记录: |