Laravel 7:自定义防护身份验证无法正常工作

时间:2020-11-11 22:27:58

标签: laravel authentication

我有一个multiauth项目。我具有默认身份验证和自定义防护。在登录控制器上,当我尝试登录时,它会按预期进行身份验证。但是,进入首页后,自定义防护将不再登录。

使用自定义防护的用户已经通过外部API登录,因此我不希望它们出现在我的users表上。我只需要几个字段即可向他们显示一些内容。

LoginController.php(直到返回时,try方法返回TRUE)

dat1 <- setNames(dat, sub(" (\\w+) (\\w+)$",'\\2 \\1', names(dat)))

tms <- unique(sub('\\w+ (\\w) \\w+', '\\1', names(df)[-(1:2)]))

reshape(dat1, -(1:2), dir='long', times = tms, sep=' ')

    aColumn anotherColumn time DayTime DayValue id
1.a   stuff    more stuff    a   12:00        R  1
2.a   stuff    more stuff    a   13:00        I  2
3.a   stuff    more stuff    a   14:00        O  3
1.b   stuff    more stuff    b   12:45        R  1
2.b   stuff    more stuff    b   14:00        P  2
3.b   stuff    more stuff    b   15:35        O  3

CustomProvider.php

...irrelevant code...
Auth::guard('ivao')->attempt(array('vid' => $user_array->vid, 'name' => $user_array->name, 'surname' => $user_array->surname), true);
Cookie::queue(Cookie::forever($this->cookie_name, $_COOKIE['ivao_token']));
Cookie::queue(Cookie::forever('vid', $user_array->vid));

return redirect('/');
...irrelevant code...

主页控制器(这两种检查方法都返回FALSE)

class CustomUserProvider extends ServiceProvider implements UserProvider
{
    public function retrieveById($identifier)
    {

    }
    public function retrieveByToken($identifier, $token)
    {
        if(Cookie::get('rememberToken') == $token)
        {
            $user = new ApiUser();
            $user->vid = Cookie::get('vid');
            $user->name = Cookie::get('name');
            $user->surname = Cookie::get('surname');

            return $user;
        }
        else return NULL;
    }
    public function updateRememberToken(UserContract $user, $token)
    {
        if(Cookie::get('rememberToken') == $token)
        {
            Cookie::queue(Cookie::forever('vid', $user->vid));
            Cookie::queue(Cookie::forever('name', $user->name));
            Cookie::queue(Cookie::forever('surname', $user->surname));
            Cookie::queue(Cookie::forever('rememberToken'), $token);

            return TRUE;
        }
        else return FALSE;
    }
    public function retrieveByCredentials(array $credentials)
    {
        $user = new ApiUser();
        $user->vid = $credentials['vid'];
        $user->name = $credentials['name'];
        $user->surname = $credentials['surname'];

        return $user;
    }
    public function validateCredentials(UserContract $user, array $credentials)
    {
        return TRUE; //already validated at the API
    }
}

如果您需要更多信息,请告诉我。希望有人能帮忙。我被卡住了。谢谢。

0 个答案:

没有答案