0

Auth:attempt() が成功した後、Auth::check() は失敗します。簡単な認証を行うために、laracast.com のチュートリアルに従っているだけです。この特定のチュートリアルhttps://laracasts.com/series/laravel-from-scratch/episodes/15。したがって、バージョン 4 と 5 の間でわずかな変更が加えられたか、何か間違ったことをしている可能性があります。

これは認証を行う関数で、2 番目の関数はチェックを行います。二人とも同じクラスです。

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;
    }

}

2 番目の質問です。認証は laravel セッションを使用しますか、それともまったく別のものですか?

編集:

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 に答える
0

あなたはすでにこれから先に進んでいるようですが、もう1つのポイントは、データベーステーブルを複数形(ユーザー)とモデルを単数形(ユーザー)に保つことについて、laravelはかなり厳しいということです。モデルでユーザーとしてテーブルを明示的に宣言しているようですが、おそらくlaravelとの混乱が生じた可能性があります。

于 2016-11-12T02:39:11.930 に答える