【发布时间】:2018-04-06 17:56:05
【问题描述】:
我正在尝试重新绑定$request->user() 返回的内容,并且在浏览了内置身份验证代码后,我发现使用app->rebinding 到request->setUserResolver 的服务是如何完成的?我自己尝试过,没有运气。我创建了一个服务(好吧,选择了 AuthServiceProvider,并将注册表更改为:
public function register()
{
$this->app->rebinding('request', function ($app, $request) {
$request->setUserResolver(function () use ($app) {
$token = $this->request->bearerToken();
dd($token);
// error_log($token);
return array('user' => 1);
});
});
}
忽略 dd,这是要测试的,我怎么能找到我哪里出错了?我什至找到了一个 SO 答案,似乎表明这是要走的路,但没有任何东西被转储,没有任何东西被记录(当错误日志没有被注释掉时)并且在我的控制器中转储 $request->user() 只会返回 null。
我知道我可以使用内置的 auth/guard 设置,但我想既然我没有使用 auth/guard 设置的大部分功能,为什么不尝试自己学习和设置呢?当然,到目前为止,我一无所获。我打算回退到使用内置的东西,但我想学习和改进。
当我意识到它可能会有所作为时,我正在运行 Lumen 5.4。
【问题讨论】:
-
您是否将您的新服务提供商添加到
config/app.phpin'providers'? -
我实际上只是删除了现有
AuthServiceProvider的内容并将其写入register()。没想到这会是个问题? -
哦,我以为您将 AuthserviceProvider 复制到了新的提供程序中...不是问题。还要检查How to bind user object to request in a middleware。可以为您指明正确的方向
-
谢谢。我之前遇到过,我想我应该自己测试一下。如前所述,希望找出我在学习方面做错了什么。
-
你能提供最小代码 git repo 来调试问题吗?
标签: php laravel laravel-5 lumen