Laravel auth级别

时间:2017-10-26 09:22:28

标签: php api authentication laravel-5

我正在创建类似BackOffice(BO)系统的东西。将从一开始就解释。

有2个网站。

  1. 前台。
  2. BO网站。
  3. 在前台网站上制作了默认的Laravel身份验证。 在BO网站上通过Laravel护照进行了api认证,并进行了另一种认证(在BO网站玩家和用户中可以登录,我使用了后卫'玩家'和守卫'用户')。

    用户可以通过默认身份验证登录(拥有数据库表用户) 玩家只有在请求通过auth:api middleware后才能登录。

    注册。 在前端站点上的玩家填写表单 - 创建前端站点上的新记录。 然后前站点使用新注册的玩家数据向BO站点(通过laravel护照)进行api呼叫。 BO站点签入auth:api如果一切正常 - 然后在BO站点为该新玩家创建新记录。在这个阶段一切都还可以。

    登录。播放器在前端站点上进行身份验证 - 一切正常,在前端站点将api呼叫到BO站点进行登录后。 在BO也登录是好的,我看到转储与该播放器数据(做Auth :: guard('玩家') - >登录())。

        if (Auth::guard('players')->attempt(array('email' => $request->username, 'password' => $request->password))) {
    
            $loggedUser = Auth::guard('players')->user();
            $loggedUser->last_login = date('Y-m-d H:i:s');
            $loggedUser->save();
            Auth::guard('players')->login($loggedUser, false);
    
            return Auth::guard('players')->user()->toArray();
        }
    

    我得到了这个

    {"id":3,"username":"pl1","name":"Player 1","email":"pl1@mail.com"}
    

    这意味着一切正常。

    然后我对BO进行另一次api调用(例如注销玩家)。 在动作开始时,我检查Auth :: guard('players') - 它是null。只有后卫('api')不为空,但后卫('球员')无效。

    public function logout(Request $request)
    {
        $guards = array_keys(config('auth.guards'));
        foreach ($guards as $guard)
        {
            var_dump($guard);
            var_dump(Auth::guard($guard)->check());
        }
    
        dd(Auth::guard('players')->user());
    
        $res = Auth::guard('players')->user()->logout();
    }
    

    我得到了

    string(3) "web" bool(false) string(7) "players" bool(false) string(3) "api" bool(true)
    null
    

    无法弄清楚出了什么问题:之前的登录请求我有玩家守卫,但在2秒后我进行了退出呼叫 - 玩家守卫无效。

    感谢。

0 个答案:

没有答案