Laravel 注销记住令牌错误

Laravel logout remember token error

这次我尝试注销用户...我很确定我的路由和控制器是好的,但我不知道为什么我有这样的错误(当然当我'我正在尝试注销 ):

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'remember_token' in 'field list' 

这是我在控制器中的方法:

public function logout()
{
    Auth::logout();
    return redirect('/');
}

我的注销是 link 在视图中...怎么了?

要在 laravel 中注销,您应该在用户 table 中添加 remember_token 列。或您用于 auth

的任何 table

我正在使用 Laravel 5.5 并在 Whosebug 中阅读有关 The User Provider Contract, I saw something is also the answer to another question here 的内容:

由于Userclass继承自Authenticatable,Authenticatableclass使用了AuthenticatableContract,实现了用户获取和设置Token的方法

因此,一个简单的解决方案是在您的用户 class(或等效项)中覆盖(或实现)这些方法:

public function getRememberToken()
{
    return $this->token;
}

public function setRememberToken($value)
{
    $this->token = $value;
}

public function getRememberTokenName()
{
    return 'token';
}

您可以替换 'token' 并使用您想要的任何词。

在Auth/LoginController上添加功能:

function get_guard(){
        if(Auth::guard('web')->check()){
            return "web";
        }
        elseif(Auth::guard('manager')->check()){
            return "manager";
        }
        elseif(Auth::guard('client')->check()){
            return "client";
        }
        return "web";
    }

    public function logout(){
        $guard = $this->get_guard();
        switch ($guard) {
            case 'admin': Auth::guard('admin')->logout(); break;
            case 'web' : Auth::guard('web')->logout(); break;
            default : Auth::guard('web')->logout(); break;
        }
        return redirect()->guest(route("login"));
    }