我正在尝试在每个页面中执行一个函数,我AppServiceProvider.php在boot()依赖Auth类中执行此操作但Auth::check()始终返回false namespace App\Providers;use Illuminate\Support\ServiceProvider;use Auth;class AppServiceProvider extends ServiceProvider{ /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { dd(Auth::check()); }}
3 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
服务提供者确实是引导 Laravel 应用程序的关键。应用程序实例被创建,服务提供者被注册,请求被交给引导的应用程序。真的就是这么简单!
一旦应用程序被引导并注册了所有服务提供者,请求将被移交给路由器进行调度。路由器会将请求分派给路由或控制器,并运行任何特定于路由的中间件。
并且由于 Auth 和 Session 是使用中间件更新/初始化的,这意味着您无法从服务提供商访问它。
您只能使用在呈现视图时调用的回调将数据绑定到服务提供者中的视图(这意味着服务器已经在准备响应)
View::composer('is_authenticated', Auth::check());
桃花长相依
TA贡献1860条经验 获得超8个赞
也许 Auth 在 AppServiceProvider 之前没有加载。因为在控制器中 Auth::check() 运行良好。所以我认为在 AppServiceProvider 中使用 Auth::check() 是非常糟糕的主意。AppServiceProvider 旨在注册和引导服务,也许您的应用程序中有更好的 Auth::check() 位置?
- 3 回答
- 0 关注
- 352 浏览
添加回答
举报
0/150
提交
取消