Laravel 5.2使用条件

时间:2018-04-30 14:39:04

标签: php laravel authentication login

所以,我有laravel默认的用户表。但是我添加了一个名为' status'的新列。
因此,users表上的列是id,name,email,password,remember_token,created_at,updated_at,status
对于admin,状态值介于0和1之间,对于普通用户,状态值介于0。
我也有认证,但问题是如何检查用户是否'登录时状态为0或1,以便我可以根据状态重定向? - 管理员将转到管理员面板,用户将返回主页

laravel的用户默认值,添加' status'

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

    class User extends Authenticatable
    {
        use Notifiable;
        protected $fillable = [
            'name', 'email', 'password', 'status',
        ];
        protected $hidden = [
            'password', 'remember_token',
        ];
    }

HomeController也默认为laravel

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        return view('home');
    }
}

LoginController也默认为laravel

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    use AuthenticatesUsers;
    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}

感谢。

3 个答案:

答案 0 :(得分:1)

如果它是所有默认的laravel认证,那么你应该可以

( Auth::user()->status === 0 ) ? 'do something' : 'do something else';

答案 1 :(得分:1)

默认情况下,laravel重定向到"已验证"登录后的功能。所以你可以添加" authenticated"功能在" LoginController"。在"认证"函数将获取用户对象。

protected function authenticated(Request $request, $user)
{
    if (!$user->status == 1) {
        return redirect('admin');
    }
    return redirect('web');
}

答案 2 :(得分:1)

您可以覆盖authenticated()中的App\Http\Controllers\Auth\LoginController方法,在用户通过身份验证后添加逻辑:

   protected function authenticated($request,$user)
    {
        if(\Auth::user()->status){
            return redirect('/admin'); 
        }

        return redirect('/home');   
    }