laravel`Auth:user()`或`Auth:id()`如何工作

时间:2017-02-27 13:22:15

标签: php laravel laravel-5 laravel-authorization

laravel Auth:user()Auth:id()如何运作

是否驻留在会话或数据库中。

我搜索但没有得到好文章。

请帮助理解。我知道我会得到许多下来的选票;)

4 个答案:

答案 0 :(得分:3)

这是我试图找出Auth::user()电话实际发生的事情:

Auth::user()

Illuminate\Support\Facades\Auth
extends Illuminate\Support\Facades\Facade

Facade::__callStatic('user')

static::getFacadeRoot()

resolveFacadeInstance(static::getFacadeAccessor == 'auth' (from Auth class))

return static::$app[$name];
static::$app is instance of Illuminate\Foundation\Application
extends Illuminate\Container\Container

实现ArrayAccess(这就是为什么$obj[]语法有效)

Container::offsetGet(auth)

Application::make(auth) 

Container::getAlias(auth) return 'auth'

Container::make(auth)

Container::resolve(auth)

yadda,yadda,yadda 见Application::registerCoreContainerAliases

'auth' = Illuminate\Auth\AuthManager

AuthManager::user() = AuthManager::__call = $this->guard()->user()

AuthManager::guard(web)

AuthManager::resolve(web) (see config/auth.php)

AuthManager::createSessionDriver() returns new Illuminate\Auth\SessionGuard

SessionGuard::user() // <---- this is what actually get's called, based on default config

答案 1 :(得分:2)

你读过这个吗?

是一个很好的指南

https://laravel.com/docs/5.4/authentication

答案 2 :(得分:0)

laravel使用session进行身份验证。如果你是laravel的开始,那么必须阅读以下链接:

https://laravel.com/docs/5.4/authentication

我认为它可以帮助你

答案 3 :(得分:0)

您可以在Auth \ SessionGuard类中找到此方法:

  

可认证|空用户()

     

获取当前经过身份验证的用户。

     

返回值Authenticate | null

签出:https://laravel.com/api/5.7/Illuminate/Auth/SessionGuard.html#method_user