2016-09-28 7 views
0

Так что мне нужна помощь, чтобы узнать, как создавать политики для авторизации. Я хорошо понимаю Гейтса, и они работают для меня, но когда я создаю политику, она не работает.авторизация 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); Но это тоже не сработало.

спасибо.

+0

Вы зарегистрировали свой класс политики в своем 'AuthServiceProvider'? – Doom5

+0

@ Domm5 Да, я сделал «App \ Message» => «App \ Policies \ MessagePolicy», – Kaley36

ответ

1

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

Смежные вопросы