是的,这是可能的,但不在.env 文件中。相反,您可以将逻辑移至中间件:
第 1 步:将默认值添加到应用程序配置
打开您的app/config/app.php 并将您的默认值添加到现有数组中。
<?php
return [
'APP_ID' => '45678',
'APP_SECRET' => 'abc456',
...
];
第 2 步:创建新的中间件
php artisan make:middleware SetAppConfigForUserMiddleware
将文件编辑成如下所示:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
class SetAppConfigForUserMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$authorizedUser = Auth::user();
if (!App::runningInConsole() && !is_null($authorizedUser)) {
Config::set('app.APP_ID', 'appidOfUser' . $authorizedUser->name);
Config::set('app.APP_SECRET', 'appsecretOfUser' . $authorizedUser->email);
}
return $next($request);
}
}
第 4 步:运行您的中间件
如果您需要在所有网络路由中为用户设置此配置,您可以添加到app/Http/kernel.php 中的$middlewareGroups 数组。这会将中间件应用到 web.php 内的所有路由。
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\SetAppConfigForUserMiddleware::class,
],
第 5 步:测试
例如,我的Auth:user()->name 是“John”,我的Auth:user()->email 是“john@example.com”
如果你把它放在你的resources/views/home.blade.php
App Id Of User <code>{{config('app.APP_ID')}}</code>
App Secret Of User <code>{{config('app.APP_SECRET')}}</code>
结果将是appidOfUserJohn 和appsecretOfUserjohn@example.com。