11

laravelAuth:user()或如何Auth:id()工作

它是驻留在会话还是数据库中。

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

请帮忙理解。我知道我会得到很多反对票;)

4

4 回答 4

7

这是我试图弄清楚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
于 2018-04-04T17:32:57.743 回答
3

你读过这个吗?这是一个很好的指南

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

于 2017-02-27T13:24:30.543 回答
1

laravel 使用 session 进行身份验证。如果您是 laravel 的初学者,则必须阅读以下链接:

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

我认为它对你有帮助

于 2017-02-27T14:12:52.807 回答
1

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

可验证|空用户()

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

返回值 可认证|null

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

于 2019-01-29T08:03:37.417 回答