我尝试在app/providers/AppServiceProvider.php
中创建全局变量。
我想在前缀为webiste / user时返回userID,我尝试转储,但结果为空
use Auth;
public function boot()
{
dump(@Auth::guard('users')->user()->id); //Null
}
答案 0 :(得分:1)
您无法在AppServiceProvider的启动方法内访问auth用户,该方法在身份验证机制之前被调用。
您可以做的是创建一个ViewComposer并将变量传递给所需的任何视图。
首先创建一个服务提供商,让我们说ComposerServiceProvider
,您可以使用php artisan make:provider ComposerServiceProvider
来生成一个。
*不要忘记在您的config / app.php文件中注册提供商,并使用以下代码
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\View\Factory as ViewFactory;
class ComposerServiceProvider extends ServiceProvider
{
public function boot(ViewFactory $view)
{
$view->composer('*', 'App\Http\ViewComposers\GlobalComposer');
}
public function register()
{
//
}
}
然后使用下面的代码创建一个GlobalComposer.php类文件
namespace App\Http\ViewComposers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Contracts\View\View;
class GlobalComposer
{
/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$view->with('user', Auth::user());
}
}
现在,服务提供商的引导方法上的星号表示“所有视图”,这意味着对于GlobalComposer将采取的所有项目视图。您可以将星号替换为所需的任意视图,也可以使用一系列视图,例如['auth/login', 'auth/register']
接下来,在compose方法内的GlobalComposer文件中,“组合”要在与Composer绑定的视图上传递的变量。
还要检查Laravel doc
答案 1 :(得分:0)
根据这些评论,我认为可以通过在api.php
文件中添加经过身份验证的新路由来简单地解决您的问题。
尝试这种方法:
Route::middleware('auth:api')->get('/webiste/user', function (Request $request) {
return $request->user()->id;
});