Авторизация Laravel с использованием политик

Поэтому мне нужна помощь в изучении того, как создавать политики для авторизации. Я довольно хорошо понимаю Гейтса, и они у меня работают, но когда я создаю политику, она не работает.

Вот код, который я использую. Я думаю, что проблема, с которой я сталкиваюсь, заключается в том, чтобы выяснить, где вы ставите проверку авторизации для данной функции модели?

public function update(User $user, Message $message)
{
   return true;
}

Здесь я просто переключаю тест на истину или ложь, просто чтобы посмотреть, как все работает. Но когда я делаю это в контроллере сообщений:

if ($user->can('update', $message)) {
    return 'You can update this post';
}

Это не работает. Я также столкнулся с другим подходом к проверке авторизации в контроллере с помощью $this->authorize('update', $message); Но и это не сработало.

Спасибо.


person Kaley36    schedule 28.09.2016    source источник
comment
Вы зарегистрировали свой класс политики в своем AuthServiceProvider?   -  person Doom5    schedule 28.09.2016
comment
@ Domm5 Да, я сделал 'App\Message' => 'App\Policies\MessagePolicy',   -  person Kaley36    schedule 28.09.2016


Ответы (1)


Таким образом, я заставил систему работать после дождя. Я многое изменил и застрял в таком количестве мест, что не знал точно, что я сделал. Но кажется, что самая большая разница заключалась в изменении способа регистрации политик. В массиве политик в AuthServiceProvider есть, видимо, пример, который прописывается во время форматирования. Несмотря на то, что в документации указана регистрация модели и политики в формате ::class в конце, я использовал формат String. Я предполагаю, что это была моя проблема. Кроме того, мне пришлось передать фактический экземпляр сообщения методу авторизации вместо использования подхода Message::class.

person Kaley36    schedule 28.09.2016