【发布时间】: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 未经授权的响应 不管真假
【问题讨论】: