Php Laravel 5-运行时设置模型和表格不工作

Php Laravel 5-运行时设置模型和表格不工作,php,laravel,Php,Laravel,我正在为“学生”和“顾问”进行两种不同类型的授权,因此有两个表 到目前为止一切正常。用户可以选择usertype,然后登录,但当我在页面中打印{{Auth::user()['username']}}时,会发生错误:只能显示'student'名称,因为我在config/Auth.php中将模型和表指定为'student'和'students'。对于顾问用户,他们可以成功登录,但无法显示用户名 我试图在运行时使用config设置模型和表,但不起作用,下面是我的AuthController的一部分:

我正在为“学生”和“顾问”进行两种不同类型的授权,因此有两个表

到目前为止一切正常。用户可以选择usertype,然后登录,但当我在页面中打印{{Auth::user()['username']}}时,会发生错误:只能显示'student'名称,因为我在config/Auth.php中将模型和表指定为'student'和'students'。对于顾问用户,他们可以成功登录,但无法显示用户名

我试图在运行时使用config设置模型和表,但不起作用,下面是我的AuthController的一部分:

    if( $request->only('usertype')['usertype'] == 'student' ) {
        Config::set('auth.model','Student');
        Config::set('auth.table','students');
        $userprovider = new \Illuminate\Auth\EloquentUserProvider(app('hash'), 'App\Student');
        Auth::setProvider($userprovider);
        $this->redirectPath = '/student/home';
    }

    else if( $request->only('usertype')['usertype'] == 'consultant' ) {
        Config::set('auth.model','Consultant');
        Config::set('auth.table','consultants');
        $userprovider = new \Illuminate\Auth\EloquentUserProvider(app('hash'), 'App\Consultant');
        Auth::setProvider($userprovider);
        $this->redirectPath = '/consultant/home';
    }  $credentials = $this->getCredentials($request);      

    if (Auth::attempt($credentials, $request->has('remember'))) {
        return $this->handleUserWasAuthenticated($request, $throttles);
    }
似乎Config::set根本不起作用。有什么问题吗?
我使用的是Laravel 5.1。

让我试着根据jedrzej在评论中的解决方案回答我的问题

set确实可以工作,但只工作了一次,并且需要为每个身份验证请求进行修改。在这种情况下,使用中间件是一个理想的解决方案—在成功登录时将用户类型存储在会话中,然后在中间件中从会话中读取该值并设置配置变量—laravel.com/docs/master/middleware


另一个更简单的解决方案是使用一些包进行多重身份验证。我使用了Sarav\Multiauth(),它工作得非常好。

您只为用户尝试登录时完成的单个请求修改了用户提供程序。在随后的尝试中,将使用原始配置。您需要根据认证的用户类型修改每个请求的配置。谢谢!我是否可以在全球范围内更改它?在blade.php页面中修改请求非常困难,比如{{Auth::user()}}您可以在中间件中完成这项工作—在成功登录时将用户类型存储在会话中,然后在中间件中从会话中读取该值并设置配置变量。或者实现您自己的用户提供程序,根据该值使用不同的表加载用户谢谢,这非常有用!只是添加了另一个解决方案:使用一些多身份验证包,比如Sarav\Multiauth