2017-02-13 18 views
3
私はlaravel 5.3を使用してアプリケーションを作成して、それがローカルホスト上で正常に動作しているが、私は、サーバー上のすべての私のコードをuplodedた後、私はこのエラーを持っている

HttpException:このアクションは許可されてい

Symfony\Component\HttpKernel\Exception\HttpException in /home/project/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php line 133: This action is unauthorized. 

これは、ポストを使用してコントローラで機能を呼び出そうとしているときに起こります。

ルート

Route::group(['middleware' => 'auth'], function() { 
    Route::group(['middleware' => 'admin'], function() { 
     Route::post('admin/store/', 'Admin\[email protected]'); 
    }); 
}); 

コントローラ私はこの問題を解決するにはどうすればよい

protected function store(AnnouncementRequest $request) { 
    return Auth::user()->id; 
} 

これは一例ですか?なぜこれは私のローカルホスト上で起こっていないのですか?

ありがとうございます。

+0

あなたのコントローラの機能にaccess protected修飾子がある理由はわかりません。それを公開に変更し、何が起こるかを見てください。また、私がリモートホスト9/10で作業していないものがローカルで動作している理由は、キャッシュ(try a php artisan cache:ローカルでクリアして、まだ動作しているかどうかを確認すること)でした。 – peaceman

+0

こんにちはpeaceman、あなたの返信のおかげで、上記のどれも私のために働いた。 – Kvnamo

+3

私の研究から 'この行為は許可されていません。 'アクセスする権限がないリソースにアクセスしようとしているときに表示されます。独自のRequest(AnnouncementRequest)で何が起こっているのかは、authorizeメソッドからfalseを返すかどうかです。 – peaceman

答えて

0

私が見たものの、このシナリオでは多くの状況があります。私の場合は、AnnouncementRequestというカスタムFormRequestを使用していました。そのクラスの中で、私は認証ユーザーのロールプロパティをチェックしていました。

// before 
public function authorize() { 
    if(Auth::user()->role_id === 1) { 
     return true; 
    } 

    return false; 
} 

私の間違いは、検証に===代わりに==を使用することでした。だから、すべてがうまく動いていることを修正した後。

// after 
public function authorize() { 
    if(Auth::user()->role_id == 1) { 
     return true; 
    } 

    return false; 
} 

はとにかく、なぜそれがローカルホスト上で働いていたが、サーバ上ではなかったでしたあなたのAnnouncementRequestファイルは、AUTHORIZE関数からtrueを返すように設定されていることを

+1

あなたの親切な情報については、@peacemanに自分の答えではなく答えとしてコメントを投稿するように伝えたはずです! –

+0

あなたは絶対に正しいです、@ BasheerAhmedKharoti。私のコードで同じエラーがピーマンの提案で修正されました。 – shahsani

26

をチェック...私のために謎のまま。デフォルトではfalseが返されます。

関連する問題