首页 文章

Laravel,Auth :: user()在控制器中

提问于
浏览
3

Laravel框架 - 为什么我不能在laravel项目的控制器中使用Auth :: user(),(以查看用户是否已登录) . 会话是否未连接到控制器?

HomeController.php

public function isauthorized(){
    if (Auth::user()){
        return View::make('home.basic')
            ->with('basic1', 'Authorized');
    }else{
        return View::make('home.basic')
            ->with('basic1', 'Not Authorized');
    }
}

我的登录系统正在运行,并且登录时始终设置会话 . 当我在View或routes.php中调用函数Auth :: user()时,它是成功的 . 但是当我在控制器中调用该函数时,它是错误的 . 请帮忙 .

7 回答

  • 5

    问题是您没有包含Auth外观 .

    在你的HomeController.php中:

    use Illuminate\Support\Facades\Auth;
    
  • 9

    如果您使用的是Laravel 5.x,那么您可能拥有auth中间件组件 . 这可能是缺失的环节 .

    我经常在我的控制器中使用这样的模式:

    public function __construct()
        {
            $this->middleware('auth');
            $this->user =  \Auth::user();
        }
    

    然后你可以

    if ($this->user .. )

    要么

    if ($this->user->can('something')) with Entrust or similar

  • 2

    加上

    使用Illuminate \ Support \ Facades \ Auth;

    在您的控制器库中

  • -1

    您需要在控制器中使用Auth外观;

    在类定义之前添加此行 .

    use Auth;
    
  • 0

    要查看用户是否已插入,请勿使用 Auth::user() . 请改用 Auth::check() .

    if (Auth::check()){
        return View::make('home.basic')->with('user', Auth::user());
    }
    
  • 1

    使用 Auth::check() 函数检查用户是否已记录

  • 4

    我也有同样的问题 . 我发现的解决方案是不使用\ Auth :: user()(它返回null) . 相反,像这样经过警卫: \Auth::guard('mrm')->User() . 显然用你正在使用的任何auth guard替换'mrm' .

    这可以正常返回当前用户,即使Auth :: User返回null,你也可以使用其他方法 - 例如 \Auth::guard('mrm')->check() 而不是 \Auth::check() (总是返回false) .

    不知道为什么Auth门面不起作用,但至少有一个替代品可以 .

相关问题