0

Auth::check() 在成功 Auth:attempt() 后失败。我只是按照 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 正在检查某种时间,它可能会因为时间错误而总是失败。

PS 已经查看了 stackoverflow 中的其他解决方案。

谢谢

4

3 回答 3

1

我认为 Laravel 有一个错误。如果您使用 Auth::attempt 验证您的凭据,则返回 true 并“销毁会话”。所以我们重定向我们的 url 并使用 Auth::check() 所以它返回 false。因为会话被破坏并且您丢失了要检查的数据。

于 2015-02-24T13:07:03.560 回答
1

看起来像 Auth::attemp() 的参数;有效尝试使用它。

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';
}
于 2014-09-25T05:26:48.527 回答
0

我看到你已经从这个开始了,但另一点是 laravel 非常严格地保持你的数据库表是复数(用户)和模型单数(用户)。我看到您在模型中明确将表声明为用户,但可能会与 laravel 产生一些混淆。

于 2016-11-12T02:39:11.930 回答