phpuint Illuminate \ Auth \ Access \ AuthorizationException:此操作是未授权的

问题描述 投票:1回答:1

我在控制器中有这样的index方法

 public function index()
{
     $this->authorize('index', Contact::class);
  ....
}

index中的ContactPolicy方法>

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)测试\功能\帐户测试:: a_user_without_permission_can_not_see_contactsIlluminate \ Auth \ Access \ AuthorizationException:此操作未经授权。

Note1

:当我将控制器更改为此时,它可以正常工作,并向我显示绿色
public function index()
{
    if(Auth::user()->can('view_Contact')){
      ........
    }else
    return response()->view('403',['msg' => 'you_not_have_not_permission'])->setStatusCode(403) ;

Note2

:在测试类的登录方法中,我发送用户权限参数,并且它可以正常工作。

我在控制器中有这样的索引方法,例如:public function index(){$ this-> authorize('index',Contact :: class); ....}和ContactPolicy中的索引方法public function index(){...

laravel laravel-5 laravel-5.8 laravel-authorization laravel-unit-test
1个回答
1
投票

authorize方法如果未授权用户将引发异常。您需要使用@expectesException或类似方法来向您的测试发出信号以期望发生异常。

© www.soinside.com 2019 - 2024. All rights reserved.