2

我在 Laravel 5.4 中创建了一个多重身份验证测试。它使用自定义中间件、自定义 Eloquent 提供程序等。身份验证流程正在运行,我可以通过两种方式登录。但是,如果用户已登录,当我想用Auth::user()​​ or检查用户时,在家庭控制器中Auth::guard()->user(),它是空的。Auth::guard()也是空的。但我不明白,为什么?!它应该包含登录的用户实例,不是吗?

还说$request->getUserResolver()守卫是空的...... oO

我做错什么了?

这是我的测试仓库,如果你想检查我的代码。

先感谢您!

编辑1:

\app\Http\Controllers\Employee\HomeController.phptheAuth::guard()->user()和 theAuth::user()中是空的。

namespace App\Http\Controllers\Employee;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class HomeController extends Controller
{

    public function __construct(Request $request)
    {
        $this->middleware('auth.employee:employee');
    }

    public function index(Request $request)
    {
        $users[] = Auth::user();
        $users[] = Auth::guard()->user();
        $users[] = Auth::guard('employee')->user();

        dd($users);

        return view('employees.home.index');
    }
}
4

2 回答 2

4

Auth::shouldUse(your_guard_name);
在您的登录功能中调用它

于 2017-04-02T08:53:00.387 回答
0

config/auth.php在as..中更改驱动程序名称

'employees' => [
        'driver' => 'eloquent',
        'model' => App\Models\UserEmployee::class,
    ],
    'customers' => [
        'driver' => 'eloquent',
        'model' => App\Models\Customer::class,
    ],
于 2017-02-04T04:42:56.427 回答