Auth :: check()失败:尝试()。我只是按照laracast.com教程进行简单的身份验证。这个特定的教程https://laracasts.com/series/laravel-from-scratch/episodes/15。因此,要么在4到5个版本之间进行轻微更改,要么我做错了。
这是一个执行身份验证的功能,第二个执行检查。他们俩都在同一个班级。
public function store()
{
$credentials = Input::only('user_displayname');
$credentials['password'] = Input::get('user_password');
if (Auth::attempt($credentials))
{
return Auth::user();
}
return 'not logged';
}
public function status()
{
return dd(Auth::check());
}
这是用户模型:
class User extends Eloquent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
protected $table = 'user';
protected $hidden = array('user_password', 'remember_token');
protected $fillable = ['user_displayname', 'user_fname', 'user_lname', 'user_email', 'user_password'];
public $errors;
public static $rules = array(
'user_displayname' => 'required|unique:user,user_displayName',
'user_fname' => 'required',
'user_lname' => 'required',
'user_email' => 'required|unique:user,user_email',
'user_password' => 'required'
);
public function isValid($data)
{
$validation = Validator::make($data, static::$rules);
if ($validation->passes()) return true;
$this->errors = $validation->messages();
}
public function getAuthPassword()
{
return $this->user_password;
}
}
第二个问题。认证是否使用了laravel Sessions,或者它是完全不同的东西?
编辑:
Auth是否有租约时间或类似的东西只是在时间到期后删除会话?此外,我的数据库列“updated_at”和“created_at”与计算机相比给出了错误的时间。所以我在想,如果Auth正在检查某种情况,那么由于时间错误,它可能总是会失败。
P.S已经查看了stackoverflow中的其他解决方案。
谢谢
答案 0 :(得分:1)
看起来像Auth :: attempt()的参数;尝试使用此功能无效。
public function store()
{
$credentials = array('user_displayname'=>Input::get('user_displayname'),
'user_password'=> Input::get('user_password'));
if (Auth::attempt($credentials))
{
return Auth::user();
}
return 'not logged';
}
答案 1 :(得分:1)
我认为Laravel有一个错误。如果您使用Auth ::尝试验证您的凭证然后返回true并“销毁会话”。所以我们重定向我们的url并使用Auth :: check()使其返回false。因为会话被破坏而你丢失了要检查的数据。
答案 2 :(得分:0)
我看到你已经离开了这一点,但另一点是laravel对于保持数据库表复数(用户)和模型单数(用户)非常严格。我看到你明确地将表声明为模型中的用户,但可能与laravel产生了一些混淆。