我正在尝试将我们的SSO(单点登录解决方案)集成到一个古老的laravel应用程序中,并在升级到5.1.26之后我想尝试ACL解决方案但遇到问题。我已经添加了一个尝试这个的基本功能,但它没有工作,我想帮助解决它。
<?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!");
}
我是否需要&#34;在&#34;中记录我的用户?由于我们拥有中央用户管理系统,因此我从不处理应用程序中的任何用户。我只有一个保存在会话变量中的用户对象(从sso api获取)。
答案 0 :(得分:0)
是
&#34;当没有经过身份验证的用户或未使用forUser方法指定特定用户时,Gate将自动为所有异能返回false。&#34;