php - Auth::user() 返回 null

标签 php authentication laravel-5 middleware

我使用的是 Laravel 5.2,中间件有问题。 routes.php中有代码


    use Illuminate\Contracts\Auth\Access\Gate;


    Route::group(['middleware' => 'web'], function () {

        Route::auth();

        Route::get('/', 'HomeController@index');
    });


    Route::group(['prefix'=>'admin',  'middleware' => 'admin'], function(){
        Route::get('/', function(){
            return view('admin.index');
        });
        Route::get('/user', function(){
            return view('admin.user');
        });
    });

内核.php:


    protected $routeMiddleware = [
    ...
     'admin' => \App\Http\Middleware\AdminPanel::class,
    ];

AdminPanel.php


    namespace App\Http\Middleware;


    use Closure;
    use Illuminate\Support\Facades\Auth;
    use App\Role;

    class AdminPanel
    {
        public function handle($request, Closure $next)
        {
            $user = Auth::user();
            dd($user);

            if($user){
                $role = Role::whereName('admin')->first();
                if($user->hasRole($role)){
                    return $next($request);
                }
            }
            return redirect('/');
        }

所以,

$user = Auth::user()
总是返回空值。 感谢您的建议!

最佳答案

我遇到了 Auth::user() 总是返回 null 的情况,这是因为我试图让 User Controller 的构造函数。

我意识到您无法在 Controller 的构造函数中访问经过身份验证的用户,因为中间件尚未运行。

作为替代方案,您可以直接在 Controller 的构造函数中定义基于闭包的中间件。

namespace App\Http\Controllers;

use App\User;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;

class ProjectController extends Controller
{
    protected $user;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware(function ($request, $next) {

            $this->user = Auth::user();

            return $next($request);
        });
    }
}

关于php - Auth::user() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35160144/

相关文章:

php - Laravel 5 路由仅适用于斜杠

php - Laravel 显示空白页面(持续加载)

php - password_verify 不验证哈希

javascript - 在另一个文件上完成注册后在另一个文件上显示模式

php - Zillow - 请求被阻止,检测到爬虫

linux - 通过我服务器上的 php 脚本进行身份验证的方法

authentication - WebDAV 返回 401 - 如何进行身份验证?

validation - Laravel 验证错误自定义响应格式

PHP mysql排序行

javascript - 使用 transportCredentialOnly 安全性对 RESTful WCF 服务的跨域 Ajax JSON POST 支持