目标类 [currentTenant] 不存在(Spatie/Multitenancy)

问题描述 投票:0回答:1

我在我的多租户应用程序中使用了 Spatie/Multitenancy。当我访问房东域名时,出现错误:

Illuminate\Contracts\Container\BindingResolutionException 
Target class [currentTenant] does not exist.

我发现这个错误是由于设置请求会话导致的

app($this->currentTenantContainerKey())->id
。 代码如下:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Spatie\Multitenancy\Concerns\UsesMultitenancyConfig;
use Symfony\Component\HttpFoundation\Response;

class CustomEnsureValidTenantSession
{
    use UsesMultitenancyConfig;

    public function handle($request, Closure $next)
    {
        $sessionKey = 'ensure_valid_tenant_session_tenant_id';

        if (! $request->session()->has($sessionKey)) {
            // dd($request->session()->get($sessionKey));
            $request->session()->put($sessionKey, app($this->currentTenantContainerKey())->id);

            return $next($request);
        }

        if ($request->session()->get($sessionKey) !== app($this->currentTenantContainerKey())->id) {
            return $this->handleInvalidTenantSession($request);
        }

        return $next($request);
    }

    protected function handleInvalidTenantSession($request)
    {
        abort(Response::HTTP_UNAUTHORIZED);
    }
}

我可以设置值来为房东请求会话吗?

php laravel multi-tenant inertiajs laravel-jetstream
1个回答
0
投票

判断Tenant是否发起的解决方案是这样的:

    $containerKey = config('multitenancy.current_tenant_container_key');
    if (! app()->has($containerKey)) {
        // you are in Tenant mode (Tenant has found)
    } else {
        // you are in Landlord mode (No Tenant has been found)
    }
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.