在laravel中自定义后卫尝试方法

问题描述

我想为来自同一表但角色不同的用户实施多种身份验证。 我的目标是,如果用户正在通过手机查看,则系统将搜索角色=用户的User对象,如果来自pc,则系统将搜索角色= admin的用户对象。

为此,我在config / auth.PHP添加了2个自定义防护:

       'admin' => [
            'driver' => 'custom-admin','provider' => 'users',],'user' => [
            'driver' => 'custom-user',

我还将逻辑添加到LoginController

    protected function attemptLogin(Request $request)
    {
        $is_mobile = (isset($request->is_mobile) && $request->is_mobile == 'true') ? true : false;
        if($is_mobile == true)
        {
            return $this->guard('user')->attempt(
                $this->credentials($request),$request->filled('remember')
            );
        }
        else
        {
            return $this->guard('admin')->attempt(
                $this->credentials($request),$request->filled('remember')
            );
        }
    }

,我还尝试在AuthServiceProvider boot()方法修改防护措施:

        Auth::viaRequest('custom-admin',function ($request) {
            return User::where('email',$request->email)->where('password',Hash::make($request->password))->where('role','admin')->first();
        });

        Auth::viaRequest('custom-user','user')->first();
        });

我的问题是如何覆盖警卫队的try方法,以便它使用我需要的逻辑? 我想念什么,我还要定义什么?

在此状态下收到的当前错误

Method Illuminate\Auth\RequestGuard::attempt does not exist.

提前谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)