kregel/laravel-flight

使用Laravel Socialite和OAuth轻松保护您的应用程序。安装此包,配置一些环境变量,一个config/services.php条目,然后登录。

1.0.2 2024-07-22 14:18 UTC

This package is auto-updated.

Last update: 2024-09-22 14:36:15 UTC


README

使用Laravel Socialite和OAuth轻松保护您的应用程序。安装此包,配置一些环境变量,一个config/services.php条目,然后登录。永远不要让您的应用程序处于未受保护状态。

Latest Version on Packagist Total Downloads

进一步简化您的认证。与您自己的内部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_nameDRIVER_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 包模板 生成的。