将“状态”数据插入AuthController中的数据库

时间:2018-08-27 09:34:18

标签: php laravel authentication laravel-5 middleware

我想让用户只有1个登录名。我已经在数据库中使用布尔数据类型创建了active列。
然后,我使用此Auth::user()->active = true;将数据插入数据库,但是当我尝试登录时似乎不起作用。

这是在我的AuthController中:

protected function authenticated(){
    if (!Auth::user()->active) {
        if(Auth::user()->role == 'Admin') {
            Auth::user()->active = true;
            return redirect('/listUser');
        } elseif (Auth::user()->role == 'CCO'){
            Auth::user()->active = true;
            return redirect('/eCalendar');
        }
        Auth::user()->active = true;
        return redirect('/eCalendars');
    } else{
        Auth::logout();
        return redirect('/login');
    }
}

public function logout()
{
    Auth::user()->active = false;
    Auth::logout();
    return redirect('/login');
}

如果我尝试登录,数据库中的active列将不会更改。但是,如果注销成功,则更改为false

2 个答案:

答案 0 :(得分:3)

将属性值更改为

后,您需要先保存数据
Auth::user()->active = true;
Auth::user()->save();

答案 1 :(得分:1)

您必须通过调用方法 update()

保存更改
protected function authenticated(){
    if (!Auth::user()->active) {
        if(Auth::user()->role == 'Admin') {
            Auth::user()->active = true;
            Auth::user()->update();
            return redirect('/listUser');
    } elseif (Auth::user()->role == 'CCO'){
        Auth::user()->active = true;
        Auth::user()->update();
        return redirect('/eCalendar');
    }
    Auth::user()->active = true;
    Auth::user()->update();
    return redirect('/eCalendars');
    } else{
        Auth::logout();
        return redirect('/login');
    }
}

public function logout()
{
    Auth::user()->active = false;
    Auth::user()->update();
    Auth::logout();
    return redirect('/login');
}