Ich definierte PostPolicy.php
um zu handhaben, wer auf Aktionen zugreifen kann.
Ich versuche, PUT-Anfrage zu bearbeiten, um eine Post zu aktualisieren, aber es scheint nicht richtig zu funktionieren.Autorisierung über Controller Helper: Methode authorize() existiert nicht - Laravel 5.5
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;
}
}
ich diese Politik
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
App\Models\Posts::class => App\Policies\PostPolicy::class,
];
Mein Weg in AuthServiceProvider.php
registriert:
Route::put('post/update/{id}', 'CMS\[email protected]');
Last, hier ist mein Controller
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() {
}
}
Als ich Formular abgesendet haben, habe ich Fehler Method [authorize] does not exist on [App\Http\Controllers\CMS\PostController].
Ich mache meine Demo folgen documentation.
Was sind meine Fehler? Fehle ich gerade?
ja du verpasst etwas .. dein Controller hat diese Methoden nicht ... schau dir den Controller an, den du erweitern solltest in deiner Anwendung 'App \ Http \ Controllers \ Controller' ... nur Aliasing Dinge in der Spitze der Datei, tut nichts von selbst – lagbox