2017-04-03 56 views
1

我試圖在我的編輯請求中授權失敗時在laravel中顯示自定義403文件。如果授權失敗,Laravel自定義錯誤頁面

我試過forbiddenResponse()但事實證明它已被淘汰。

然後我嘗試了failedauthorization(),但這並沒有重定向,並允許我編輯。

這裏是我的請求文件

public function authorize() 
{ 
    $job_posting_id = $this->route('id'); 

    $job_posting = Job_postings::where('id', $job_posting_id)->where('user_id', user()->id)->exists(); 

    if($job_posting){ 
    return true; 
    } 

    return false; 
} 

public function failedAuthorization() 
{ 

    return redirect('errors.dashboard.parent.403'); 
} 

我有一個文件夾叫錯誤,裏邊有我有儀表盤的文件夾和家長在錯誤文件的位置。

如果授權失敗,我該如何重定向到該頁面?

+0

'返回查看( 'errors.dashboard.parent.403')'? –

+0

我也嘗試過,但它只是傳遞它並去編輯。 – raqulka

+0

你需要創建一個異常,並在Exceptions/Handler.php文件的報告方法中做'if($ e實例YOUREXCEPTION){//這裏返回你的視圖}' – Vikash

回答

0
public function authorize() 
{ 
    $job_posting_id = $this->route('id'); 

    $job_posting = Job_postings::where('id', $job_posting_id)->where('user_id', user()->id)->exists(); 

    if($job_posting){ 
    return true; 
    } 

    return redirect('/error'); 
} 

public function failedAuthorization() 
{ 

    return view('errors.dashboard.parent.403'); 
} 

在你的路線

Route::get('error', '[email protected]'); 
2
return abort('403') 

Laravel文檔: https://laravel.com/docs/5.4/errors#http-exceptions


如果你把一切都像在文檔中,您將獲得:

  1. 網址將保持不變。
  2. 將顯示模板resources/views/errors/403.blade.php
  3. ASLO響應將有狀態代碼:403禁止

你想更改網址爲http://www.examlpe.com/error403

return abort('403')不會重定向。它只是顯示出現錯誤的客戶端。


就你而言,在單個腳本中顯示不同內容比不同腳本更容易。嘗試將單個錯誤腳本作爲「入口點」。並在該腳本中更改不同用戶的輸出。想象一下,403.blade.php是一個403錯誤頁面的佈局。

+0

這不反正我也不回答這個問題。我已閱讀文檔。 – raqulka

+0

爲什麼我要這樣做是因爲我有兩個錯誤頁面,一個用於未登錄用戶,另一個用於登錄用戶,一個文件位於錯誤/ /另一個位於錯誤/儀表板。我怎樣才能顯示不同的錯誤頁面? – raqulka

0

前往文件例外/ Handler.php的report方法。

public function report(Exception $e) 
{ 
    if(!Auth::check()) 
    { 
     // Do whatever you want - redirect or return something 
    } 
    if($e instanceof HttpException && $e->getStatusCode() == 403) 
    { 
     // Do whatever you want - redirect or return something 
    } 
    return parent::report($e); 
} 

而且無論你的授權失敗,只寫abort(403)

希望這將有助於:)

+0

Vikash,我爲什麼要這樣做是因爲我有兩個錯誤頁面,一個用於未登錄用戶,另一個用於登錄用戶。我怎樣才能顯示不同的錯誤頁面?你的答案也不重定向到頁面 – raqulka

+0

檢查一次,如果有幫助 – Vikash

相關問題