【发布时间】:2016-01-18 19:00:08
【问题描述】:
我在 Laravel 5.1 中的 Auth 数据方面遇到了一些问题 我想获取 Logged 用户的 id,如果我在 View 中使用它,它可以工作,让我们说:
<?php echo Auth::user()->id;?>
但是,如果我尝试在 Controller 中访问它,它将无法正常工作,我会收到此错误:
ErrorException in Con_Mascota.php line 101:
Trying to get property of non-object
在第 101 行我已经:
$cod_usu=$request->user()->cod_usu;
我把它从 $cod_usu=Auth::user()->cod_usu;因为那也不起作用。
我也将它包含在控制器中:
use Auth;
非常感谢任何帮助:)
我认为问题是我的身份验证会话在刷新后或我转到另一条路线后登录:
我的登录功能是:
*/
public function ini_ses(Request $datos)
{
//Inicia sesion
// Session::put('ses_correo', Input::get('email'));
$correo = $datos->input('email');
$password= $datos->input('password');
if(Auth::attempt(['correo_elec'=>$correo, 'password'=>$password]))
{
$_session['correo']=$correo;
$_session['contra']=$password;
if(Auth::user()->tipo==0)
{
return view('cliente');
}
elseif(Auth::user()->tipo==1)
{
return view('veterinario');
}
elseif(Auth::user()->tipo==2)
{
echo("Admin");
}
}
else
{
var_dump($correo, $password);
}
}
型号:
namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class Usuario extends Model implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;
public $timestamps = false;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'usuario';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['cod_usu', 'correo_elec', 'nombre', 'ape_p', 'ape_m', 'telefono', 'celular', 'pais' , 'tipo'];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = ['contra', 'remember_token'];
}
我找到了解决方案,我改变了这个:
if(Auth::attempt(['correo_elec'=>$correo, 'password'=>$password]))
到这里
if(Auth::attempt(['correo_elec'=>$correo, 'password'=>$password], true))
这最终让我不得不在表中更改我的 cod_usu 以获取 id,并阅读 jedrzej.kurylo 的答案,我想这可以解决问题
【问题讨论】:
-
Auth::user() 仅当您通过身份验证时才返回 User 对象 - 否则它返回 null 并且您会收到错误消息。确保您已通过身份验证或首先通过在 Auth::user()->cod_usu 之前调用 Auth::check() 来检查您是否已通过身份验证
-
Auth::check() 返回 false,但我在登录后立即访问该路由,我的意思是我登录,我进入我的索引视图,然后单击转到我正在使用 Auth::check() 的另一条路线,是否有原因可以自动注销?
-
你是自己实现登录还是使用Laravel自带的AuthController?
-
我用过 Laravel,我会把我的代码放在帖子里
-
能否也粘贴您的用户模型和用户表架构?
标签: php laravel authentication laravel-5 laravel-5.1