rickselby / laravel-external-basic-auth
Laravel 外部基本认证
1.8.0
2024-03-14 12:20 UTC
Requires
- php: 8.*
- laravel/framework: 10.*|11.*
Requires (Dev)
- graham-campbell/testbench: 6.*
- phpunit/phpunit: 10.*
README
这是一个为 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',
],
],