2015-12-14 3 views
1

Я пытаюсь интегрировать наш SSO (решение для единого входа) в старое приложение laravel и после обновления до 5.1.26. Я хочу попробовать решение ACL но столкнулся с проблемой. Я добавил базовую возможность попробовать это, но он не работает, и я хочу помочь решить его.Проблема с функцией Gate с управлением сторонними пользователями в Laravel 5.1.26+

<?php 
namespace App\Providers; 

use Auth; 
use Illuminate\Contracts\Auth\Access\Gate as GateContract; 
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; 

class AuthServiceProvider extends ServiceProvider 
{ 
    public function boot(GateContract $gate){ 
     $this->registerPolicies($gate); 

     $gate->define('create-report', function ($userRoles) { 
      return in_array('super_admin', $userRoles); 
     }); 
    } 
    public function register() 
    { 
     // 
    } 
} 

И я стараюсь это с

if(\Illuminate\Support\Facades\Gate::allows('create-report', $roles)){ 
    dd("This never happens"); 
} else { 
    dd("This always happen!"); 
} 

Нужно ли мне "протоколирует пользователю"? Поскольку у нас есть наша центральная система пользователя mgmt, я никогда не обрабатываю ни одного пользователя в приложении. У меня есть только пользовательский объект (извлеченный из sso api), сохраненный в переменной сеанса.

ответ

0

Да

«Ворота автоматически возвращаются ложно для всех способностей, когда не прошедшая проверка подлинности пользователя или конкретный пользователь не был указан с помощью метода forUser.»

Laravel - Authorization - Defining Abilities

+0

Как мне авторизоваться? –

+0

Хорошо, что это отдельный вопрос из вашего вопроса. Существуют разные способы сделать это. http://laravel.com/docs/5.1/authentication – lagbox

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

  • Нет связанных вопросов^_^