[英]Laravel Protecting Routes from other System Request
我們有這個系統,我們的學生可以訪問以訪問我們提供的其他平台,例如帶有學生許可證的 Office 365 和其他程序......
我們有權創建此訪問鏈接、創建路線並添加他們提供的一些可用標簽,例如學生 email、學生唯一代碼、學生手機......
此鏈接充當我們的 Laravel 6.0 應用程序的橋梁,該鏈接應將學生發送到一個內部頁面,他們可以創建他們的 office 365 帳戶(如果他們還沒有)並重新定義他們的密碼,但問題是,我不能保證該登錄用戶不會手動(從開發檢查員)更改從路由參數傳遞的數據,也不會訪問其他學生數據並更改其 Office 密碼。
關鍵是,我可以控制這個頁面只能從以前的 URL (學生登錄的這個系統)訪問,它可以工作,但我不能從我的應用程序中做一個中間件來檢查用戶是否登錄其他應用程序,我們沒有任何 API 來檢查來自該系統的身份驗證..
有什么方法可以保護我們的路線免受其他系統的影響?
Controller 方法接收來自其他系統的此參數並驗證之前的 URL:
public function index($ra, $email){
if(url()->previous() != "https://other.system/" ){
return view('errors.503');
}
$usuario = UsuariosMicrosoft::where('login', '=', $ra)->get();
return view('portaloffice.pagina', compact('ra', 'email', 'usuario'));
}
這是我的路線:
Route::get('office365/{ra}/{email}', 'PortalOffice\PortalOfficeController@index')->name('portaloffice.usuario');
通過對 URL 保密來保護事物通常是一個非常糟糕的主意。 它們很容易被嗅探或猜到。
項目通常防止未經授權的訪問的方式是使用Auth
保護,並且與您嘗試保護的 model 和User
model 之間的關系。
設置好模型、關系和守衛后,您最終會在 controller 中得到類似的內容:
$user = Auth::user();
$user->UsuariosMicrosoft->get()
return $user;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.