Auth::guard()表示什么意思?

Laravel 5.3 的这个文件\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php
中有这样一个方法:


   protected function guard()
    {
        return Auth::guard(); //这个语句是什么意思?返回个什么值?
    }

其中的 Auth::guard() 表示什么意思?返回个什么值?

JellyBool

没记错的话,源码是这个:

  public function guard($name = null)
    {
        $name = $name ?: $this->getDefaultDriver();

        return isset($this->guards[$name])
                    ? $this->guards[$name]
                    : $this->guards[$name] = $this->resolve($name);
    }

返回的值可以看这个:

 public function getDefaultDriver()
    {
        return $this->app['config']['auth.defaults.guard'];
    }

就是读取 auth 配置的 default 值。

源码文件位于:Illuminate\Auth\AuthManager

Jerda

能解释下为什么Auth::guard()调用的是AuthManager::guard()?好迷茫

Jerda

看了《理解 Laravel 核心概念》视频,再也不怕看源码了…

746019546

@jellybool 在5.3中,怎么获取用户是使用哪个guard()登陆的呢?

JellyBool 回复 746019546

直接 Auth::user() ,默认就是 users

746019546 回复 JellyBool

我有多个用户表,比如默认表是users,管理员是admins
获取的时候需要用 Auth:guard(‘admin’)->user();
我想知道用户是从哪个表登录进来的.
可能我描述的问题不够清楚.

JellyBool 回复 746019546

这样:

Auth:guard('admin')->user(); //admins 表
Auth:guard('user')->user();// users 表
746019546 回复 JellyBool

在我不知道是哪个guard的情况下,我想得到admin or user