kregel / laravel-flight
使用Laravel Socialite和OAuth轻松保护您的应用程序。安装此包,配置一些环境变量,一个config/services.php条目,然后登录。
Requires
- php: >=8.0
- laravel/socialite: ^5.6
- socialiteproviders/laravelpassport: ^4.0
- socialiteproviders/manager: ^4.0
Requires (Dev)
- laravel/pint: ^1.6
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
使用Laravel Socialite和OAuth轻松保护您的应用程序。安装此包,配置一些环境变量,一个config/services.php条目,然后登录。永远不要让您的应用程序处于未受保护状态。
进一步简化您的认证。与您自己的内部Laravel Passport实例集成,并允许用户以他们需要的方式登录。
停止处理设置/login重定向和/callback。并非所有应用程序都需要自己的认证系统。有时我们只想使用现有的平台(如Github、Auth0)或自定义Laravel Passport实例进行登录。虽然这仍然有自己的用户表,但它主要用于跟踪社交用户。
但是为什么?
因为有些Laravel工具本身不提供认证,但需要它来为生产访问提供安全保障。
此包允许您获取您最喜欢的GitHub、Google或其他支持的OAuth提供者的凭据,将其设置在您的环境变量中,访问http://yoururl/flight/login
并登录。您将被重定向到您选择的FLIGHT_DRIVER
认证提供者,然后将被重定向到FLIGHT_LOGIN_REDIRECT
。
在请求时不存在用户将创建,除非您明确使用环境变量禁用注册(因此注册后请将其关闭)FLIGHT_ALLOW_REGISTRATION
安装
您可以通过composer安装此包
composer require kregel/laravel-flight
发布配置
php artisan vendor:publish --provider=Kregel\\Flight\\FlightServiceProvider
找到一个您想要使用的Socialite提供者
将它们的ExtendSocialite事件添加到我们的配置文件中的community_drivers
部分,如果您想将其作为主要驱动程序,则设置您的FLIGHT_DRIVER
设置后
您需要验证您已经配置了web
中间件。您还需要auth
中间件,这样Laravel就会将您重定向到您的认证提供者。
如果您正在阅读无头系统并且已经删除了这些中间件,这里基本上是同样的东西。
在您的app/Http/Kernel.php
中,web
中间件将基本上是
protected $middlewareGroups = [ 'web' => [ \Illuminate\Cookie\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \Illuminate\Foundation\Http\Middleware\VerifyCsrfToke::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ];
在$middlewareAliases
部分,您可以为App\Http\Middleware\Authenticate
添加以下替换
'auth' => \Kregel\Flight\Middleware\Authenticate::class, 'guest' => \Kregel\Flight\Middleware\RedirectIfAuthenticated::class,
上述两个中间件几乎直接来自基础Laravel应用程序,仅进行了少量配置调整。
集成新的Socialite提供者
要将新的认证提供者添加到您的应用程序中,您需要使用composer require
将它们的包添加到您的应用程序中,然后将其ExtendSocialite监听器添加到community_drivers
页面。一旦添加了驱动程序,您需要打开您的config/services.php
文件,并为您的驱动程序添加以下等效项。将driver_name
和DRIVER_NAME
替换为您的实际驱动程序。
'driver_name' => [ 'client_id' => env('DRIVER_NAME_CLIENT_ID'), 'client_secret' => env('DRIVER_NAME_CLIENT_SECRET'), 'redirect' => env('DRIVER_NAME_REDIRECT_URI'), ],
如果您首选的驱动程序是github,那么它看起来像这样
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT'), ],
最后,将您的FLIGHT_DRIVER
环境变量更改为您的首选驱动程序。
然后访问http://yourwebsite/flight/login
如果您尚未设置重定向URL或回调URL http://yourwebsite/flight/callback
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至 5355937+austinkregel@users.noreply.github.com,而不是使用问题跟踪器。
致谢
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件。
Laravel 包模板
此包是使用 Laravel 包模板 生成的。