我正在运行一个新的Laravel 6.x Lumen Install。我试图了解身份验证的工作原理,并且已经完成了一些教程。
现在我有以下代码AuthServiceProvider.php:
namespace App\Providers;
use App\User;
use Firebase\JWT\JWT;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider;
//new Code
class AuthServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Boot the authentication services for the application.
*
* @return void
*/
public function boot()
{
// Here you may define how you wish users to be authenticated for your Lumen
// application. The callback which receives the incoming request instance
// should return either a User instance or null. You're free to obtain
// the User instance via an API token or any other method necessary.
$this->app['auth']->viaRequest('api', function ($request) {
$key = 'pawifjopawiejfpoaiwejfpoji';
$jwt = preg_replace('/^Bearer (.*)/', '$1', $request->header('Authorization'));
$decoded = JWT::decode($jwt, $key, ['HS256']);
return User::where('email', $decoded->email)->first();
});
}
}
特别是在我的脸上涂上问号的这一部分:
首先,我不知道$ this到底代表什么。我知道$ this基本上是类本身的类/实例,但是如果是这样,它的属性“ app”是什么。对我而言,“ app”应代表整个app,即整个流明项目的一个实例。但这在我看来并没有多大意义,因为$ this仅表示serviceprovider类的实例,而该实例本身并不表示完整的应用程序。那么,索引“ auth”究竟引用了什么?它引用什么,可以在哪里查找其定义(我假设它是一个类)。接下来,viaRequest()的参数如何工作?默认情况下,第一个参数是“ api”,所以我想这是某种配置,但是我还有其他选择,在哪里可以找到呢?到目前为止,我尚未在官方文档中找到任何内容:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。