如何从登录控制器获取变量以供Laravel中的所有视图使用?

时间:2019-07-06 09:09:26

标签: laravel

我是编码的新手,我正在构建我的第一个使用EVE Online ESI API的真实应用程序。我设置了一个登录控制器,该控制器将用户重定向到ESI进行登录并处理回调。到目前为止,我可以成功地将用户名,令牌等数据连接并检索到我的登录控制器中的变量中,并且可以将该变量立即传递给视图。我的问题是弄清楚如何使该变量可用于所有视图。

我尝试使用View :: share('user',$ user);在登录控制器中,但无法正常工作。

在我的web.php中,我有以下路线:

Route::get('login/eveonline', 'EVELoginController@redirectToProvider');
Route::get('login/eveonline/callback', 'EVELoginController@handleProviderCallback');

我的EVELoginController.php文件中有此文件:

<?php
namespace App\Http\Controllers;

use Socialite;
use Laravel\Socialite\Two\User;
use View;

class EVELoginController extends Controller {

    /*
    | Redirect the user to the EVE online authentication page.
    |
    | @return \Illuminate\Http\Response
    */

    public function redirectToProvider() {

        return Socialite::driver('eveonline')->redirect();

    }

    /*
    | Obtain the user information from EVEOnline.
    |
    | @return \Illuminate\Http\Response
    |
    */

    public function handleProviderCallback() {

        $user = Socialite::driver('eveonline')->stateless()->user();

        return View::make('successful-eve-login',$user);        

    }

}

使用此代码,视图将获取变量,我可以在视图的HTML中使用它。但是该变量不会存储在任何地方,因此以后可以由其他视图检索。将数据导入其他视图的最佳方法是什么?原谅我非常菜鸟,但我正在尝试。

1 个答案:

答案 0 :(得分:0)

我认为通过创建会话来与多个视图共享用户变量的最佳方法。例如登录会话或普通会话。

您可以查看这些官方文档。 Session

Authentication