【问题标题】:Laravel multiauth Gate not working for admin tableLaravel multiauth Gate 不适用于管理表
【发布时间】:2021-03-16 06:12:22
【问题描述】:

在 laravel multiauth 中,我有两个表 admin 和 users。当我为用户创建门时它正在工作但对于管理员它不起作用(总是显示 403 禁止的 )。

auth.php

'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],


'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ]
    ],

AuthServiceProvider.php

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Gate::define('user', function ($user, Blog $blog) {
            return true;
        });

        Gate::define('admin', function ($admin, Blog $blog) {
            return true;
        });
    }
}


BlogController.php

class BlogController extends Controller
{
    public function update(Request $request, Blog $blog){
        if (! Gate::allows('admin', $blog)) {
            abort(403);
        }

    dd('Working');
   }
}

在前端控制器中,当使用用户门时,如果从用户门返回 false,则会给出 403 未经授权的响应,或者如果从正常工作的门返回 true,则打印工作。 但是对于后端,当我尝试使用管理门时,它总是给出 403 未经授权的响应 不管真假

【问题讨论】:

    标签: php laravel


    【解决方案1】:
    if (! Gate::forUser($request->user('admin'))->allows('admin', $blog)) {
        abort(403);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2018-10-13
      相关资源
      最近更新 更多