2017-02-13 53 views
3

我創建使用laravel 5.3的應用程序,它工作正常在本地主機,但之後我uploded服務器上我所有的代碼我有這樣的錯誤:HttpException在Handler.php 133行:這一行動是非法

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

我不確定你的控制器的功能爲什麼具有'受保護的'訪問修飾符。嘗試將其改爲公開並查看會發生什麼。另外,爲什麼東西在本地工作,而不是在遠程主機9/10上工作的原因是緩存(嘗試PHP手工緩存:本地清除,看看它是否仍然有效)。 – peaceman

+0

嗨,和平人員,謝謝你的回覆,但以上都不適合我。 – Kvnamo

+3

從我的研究'這種行爲是未經授權的。 '當您嘗試訪問您沒有足夠權限訪問的資源時出現。您的自定義請求(AnnouncementRequest)中發生了什麼,您是否從授權方法返回false? – peaceman

回答

0

那麼,對於我所看到的,這種情況可能有很多情況。在我的情況下,我正在使用名爲AnnouncementRequest的自定義FormRequest。在該類中,我正在檢查auth用戶的角色屬性。

// 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; 
} 

反正爲啥它的工作在本地主機上,但並沒有在服務器上仍是一個謎,我...

+1

爲了您的實物信息,您應該告訴@peaceman將其評論發佈爲答案,而不是您自己的答案。 –

+0

你是對的,@BasheerAhmedKharoti。我的代碼中的同一個錯誤被Peaceman的建議糾正了。 – shahsani

26

檢查您的AnnouncementRequest文件設置爲從授權的函數返回true。默認是返回false。