php - 如何在 laravel Controller 构造函数中获取登录用户

标签 php laravel constructor

我想做的是在运行任何方法之前获取用户的激活状态,如果它们不活动则重定向。这是我的代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;

class HomeController extends BaseController
{
    public function __construct(){
        parent::__CONSTRUCT();
        $this->middleware('auth');
        //SEE IF ACTIVE, something like auth()->user()->active
}

    public function home()
    {
        return redirect('/home');
    }
}

看构造函数最后一行的注释,我该怎么做?

最佳答案

从 5.3 开始,您不能直接在 Controller 构造函数中访问 session 信息。不过,您可以直接在 Controller 的构造函数中定义基于闭包的中间件。更多信息在 docs

public function __construct()
    {
        $this->middleware('auth');
        $this->middleware(function ($request, $next) {
            if(Auth::user()->active) {
                return Redirect::route('activate');
            }    
            return $next($request);
        });
    }

关于php - 如何在 laravel Controller 构造函数中获取登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000880/

相关文章:

php - 根据文件扩展名和带超链接的文件数显示从 MySQL 上传的文件

php - 如何使用搜索框 Bootstrap 处理下拉列表中的大数据

c# - 如何在没有new的情况下调用构造函数?

php - 在购物车 session 中存储和检索 woocommerce 自定义数据

php - 将日期格式更改为荷兰语

laravel - 从生产服务器上的存储库中提取更改后,Laravel 上的 Vue 文件不会反射(reflect)更改

php - Laravel 4 如何在插入新记录时将用户 ID 添加为默认值

php - laravel 5 用于加载 CSS、JavaScript 的库

constructor - F# 中的静态构造函数 - 它们何时运行?

c++ - 模板构造函数怪异