所以,我有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');
}
}
感谢。
答案 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');
}