【发布时间】:2020-04-23 03:13:47
【问题描述】:
我在这样的控制器中有index 方法
public function index()
{
$this->authorize('index', Contact::class);
....
}
和ContactPolicy中的index方法
public function index()
{
return Auth::user()->can('view_Contact');
}
和这样的测试方法
/** @test */
public function a_user_without_permission_can_not_see_contacts()
{
$this->login(['no_permission']);
$this->get('/contacts')
->assertStatus(403);
}
当我运行测试时显示此错误
1) 测试\功能\AccountTest::a_user_without_permission_can_not_see_contacts Illuminate\Auth\Access\AuthorizationException:此操作未经授权。
注意1: 当我将我的控制器更改为此它可以正常工作并显示为绿色
public function index()
{
if(Auth::user()->can('view_Contact')){
........
}else
return response()->view('403',['msg' => 'you_not_have_not_permission'])->setStatusCode(403) ;
注意2:
在测试类的登录方法中,我发送用户权限参数并且它正常工作。
【问题讨论】:
标签: laravel laravel-5 laravel-5.8 laravel-authorization laravel-unit-test