Autorisierung über Controller Helper: Methode Authorize () existiert nicht - Laravel 5.5
Posted: 16 Mar 2025, 16:43
Ich habe postpolicy.php < /code> definiert, um zu behandeln, wer auf Aktionen zugreifen kann.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;
}
}
< /code>
Ich habe diese Richtlinie in AuthServiceProvider.php < /code> < /p>
registriert.protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
App\Models\Posts::class => App\Policies\PostPolicy::class,
];
< /code>
Meine Route: < /p>
Route::put('post/update/{id}', 'CMS\PostController@update');
< /code>
Zuletzt hier ist mein Controller < /p>
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 () {
}
}
< /code>
Wenn ich das Formular einreiche, habe ich die Fehlermethode [autorize] nicht in [app \ http \ controller \ cms \ postcontroller vorhanden]. Vermisse ich in Arbeit?
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;
}
}
< /code>
Ich habe diese Richtlinie in AuthServiceProvider.php < /code> < /p>
registriert.protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
App\Models\Posts::class => App\Policies\PostPolicy::class,
];
< /code>
Meine Route: < /p>
Route::put('post/update/{id}', 'CMS\PostController@update');
< /code>
Zuletzt hier ist mein Controller < /p>
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 () {
}
}
< /code>
Wenn ich das Formular einreiche, habe ich die Fehlermethode [autorize] nicht in [app \ http \ controller \ cms \ postcontroller vorhanden]. Vermisse ich in Arbeit?