首页 > 后端开发 > php教程 > 关于 Laravel Session 的困惑,望高手解决

关于 Laravel Session 的困惑,望高手解决

WBOY
发布: 2016-08-26 10:12:54
原创
900 人浏览过

在laravel5.*中,session start被放到了web中间件中,如

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>    /**

     * The application's route middleware groups.

     *

     * @var array

     */

    protected $middlewareGroups = [

        'web' => [

            \App\Http\Middleware\EncryptCookies::class,

            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,

            \Illuminate\Session\Middleware\StartSession::class,   // [

            'throttle:60,1',

            'bindings',

        ],

    ];</code>

登录后复制

并且根据Route加载中间件的代码可以得知Controller是在被make之后才调用中间件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<code>    /**

     * Get the middleware for the route's controller.

     *

     * @return array

     */

    public function controllerMiddleware()

    {

        if (! $this->isControllerAction()) {

            return [];

        }

 

        return ControllerDispatcher::getMiddleware(

            $this->getController(), $this->getControllerMethod()

        );

    }</code>

登录后复制

这个时候问题就来了,我有一个BaseController,在构造函数里面会判断用户登录状态,如果已经登录就获取登录用户信息保存到$this->login_user_info中供子类调用,如果先make controller,session还没有start,因此在构造函数中是无法获取到登录用户的session_id,部分代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<code>/**

 * 控制层公有方法集合

 * Class BaseController

 */

abstract class BaseController extends Controller

{

 

    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

 

    public $login_user_info;

    public $login_subuser_info;

 

    public function __construct()

    {

        $this->userModel    = app(UserModel::class);

        if (session()->get('user_id')) {

            $this->login_user_info          = $this->userModel->getLoginUser();

            //设置模板全局变量

            view()->share(['login_user_info' => $this->login_user_info]);

        }

    }</code>

登录后复制

我测试过在middleware中是可以得到session,因为这个时候已经执行了StartSession中间件代码,至于我为什么要这么做就说来话长,我的项目是一个老项目切换框架到laravel,所以为了最大限度的保持原有逻辑,并且还有一些奇奇怪怪的写法,没有采用Auth,这些暂且不论,有没有办法可以在构造函数中得到session,求各位大神帮忙,谢谢

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板