首页 > 解决方案 > 如何从我的登录控制器中获取一个变量以供 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 中使用它。但是该变量不会存储在任何地方,以便以后可以由其他视图检索。将数据导入其他视图的最佳方法是什么?原谅我是个菜鸟,但我正在努力。

标签: laravel

解决方案


我认为通过创建会话来与多个视图共享用户变量的最佳方式。像登录会话或正常会话。

你可以看看这些官方文档。 会议

验证


推荐阅读