rickselby/laravel-external-basic-auth

Laravel 外部基本认证

1.8.0 2024-03-14 12:20 UTC

This package is auto-updated.

Last update: 2024-09-13 07:18:25 UTC


README

Software License Packagist Version

这是一个为 Laravel 定制的守卫器,它假设 $_SERVER['REMOTE_USER'] 中的值是当前登录用户的标识符。

Laravel 内置的基本认证仍然将用户名和密码与 users 表中的数据进行比对,而在这个情况下,该表中将不包含密码。

使用方法

composer require rickselby/laravel-external-basic-auth

然后,编辑您的 config/auth.php 文件,并在 guards 下设置适当的驱动为 external;例如:

'guards' => [
    'web' => [
        'driver' => 'external',
        'provider' => 'users',
    ],
],

备用查找字段

默认情况下,该软件包将匹配 $_SERVER['REMOTE_USER'] 值与用户模型的 id。如果 $_SERVER['REMOTE_USER'] 值在不同的字段中(例如,用户模型有一个标准的自增整数 ID 和一个独立的 username 字段),则该软件包可以由该字段查找用户。

编辑您的 config/auth.php 文件,并在相应的 guard 下添加一个 field 设置

'guards' => [
    'web' => [
        'driver' => 'external',
        'provider' => 'users',
        'field' => 'username',
    ],
],

预加载关联关系

可能需要预加载认证用户的关联关系。

编辑您的 config/auth.php 文件,并在相应的 guard 下添加一个 load 设置

'guards' => [
    'web' => [
        'driver' => 'external',
        'provider' => 'users',
        'load' => [
            'permissions',
            'roles',
        ],
    ],
],

在头部中查找 REMOTE_USER

如果您的应用程序在 Docker 容器中运行或处于其他一些情况下,您的应用程序与认证分离,那么可能希望通过头部将 REMOTE_USER 传递给应用程序。

编辑您的 config/auth.php 文件,并在相应的 guard 下添加一个 header 设置

'guards' => [
    'web' => [
        'driver' => 'external',
        'provider' => 'users',
        'header' => 'X-forwarded-REMOTE_USER',
    ],
],

从用户标识符中删除字符串

如果您的认证字段中有部分您不希望使用的内容(例如,user@domain.com),则可以将其删除

'guards' => [
    'web' => [
        'driver' => 'external',
        'provider' => 'users',
        'strip' => '@domain.com',
    ],
],