在我的.env文件中,我有两个变量
App_id: 12345
App_secret: abc123
但我想知道是否有一种方法可以让用户userNo2
登录时使用
App_id: 45678
App_secret: abc456
有没有办法根据用户在文件中拥有if/else功能?env
在我的.env文件中,我有两个变量
App_id: 12345
App_secret: abc123
但我想知道是否有一种方法可以让用户userNo2
登录时使用
App_id: 45678
App_secret: abc456
有没有办法根据用户在文件中拥有if/else功能?env
是的,这是可能的,但不在.env
文件中。相反,您可以将逻辑移至中间件:
打开您的app/config/app.php
并将默认值添加到现有数组中。
<?php
return [
'APP_ID' => '45678',
'APP_SECRET' => 'abc456',
...
];
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);
}
}
如果您需要在所有 Web 路由中为用户设置此配置,您可以添加$middlewareGroups
到app/Http/kernel.php
. 这会将中间件应用于内部的所有路由web.php
。
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\SetAppConfigForUserMiddleware::class,
],
例如,myAuth:user()->name
是“John”,myAuth: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
。
.env
只能存储键值。
由于.env
config 始终使用它,因此您可以Config::set('app.id', 45678);
在运行时使用它来改变 env。您可以将代码放在中间件中,请求结束后该值将恢复为默认值。