繁体   English   中英

Laravel 保护路由免受其他系统请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM