在模型中, User.php 我设置了一个函数调用 isStatus()
public function isStatus(){
return $this->status; // 1 of mysql table column name status, let say 0 is admin and 1 is normal user.
}
在控制器名称 LoginController.php 中,如果用户状态为 0将进入/ admin页面,其他将进入/ page < / strong>表示主页。
protected function authenticated($request, $user){
if($user->isStatus('0')){
return redirect('/admin');
}else{
return redirect('/');
}
}
带有“状态”列的用户表为布尔值,但不起作用。
答案 0 :(得分:0)
由于您正在使用Laravel,因此请重构一下代码。
您正在将参数传递给函数public function isStatus(),并接收任何参数并返回公共值。删除此功能。
auth()-> user()将为您获取连接的用户,您可以像这样访问状态属性
auth()-> user()->状态
您的函数应如下所示:
return auth()->user()->status ? redirect('/admin'): redirect('/');
您可以将此验证放入需要角色验证的所有控制器中。
如果您有兴趣,也可以开箱即用由外部供应商开发的一些模块,这些模块可以处理真正的专业验证并避免重复的代码。
检查一下
和@Kuebel的最爱
答案 1 :(得分:0)
您的函数isStatus()
返回用户模型的状态值。
在控制器中,您正在使用参数调用该函数,但是该函数不接受参数。这将是正确的控制器代码
if($user->isStatus()){ //Call the function without a parameter. Since this returns boolean (0 or 1) you don't need to add == 0)
return redirect('/admin');
}else{
return redirect('/');
}
还有BTW:这种if的写作风格很短:
($user->isStatus()) ? return redirect('/admin') : return redirect('/');
详细了解here。