2017-10-17 22 views
0

ユーザーにログインするためのカスタムモデルを作成しました。私はデータベースとしてsqliteを使用しています。 "users"テーブルには "id"カラムがあり、私は雄弁を使用していないので、auth.configファイルでドライバを "database"と "users"として変更しました。Laravelセッションが直ちに終了する(Laravel 5.5)

ユーザーがインデックスに登録されているかどうかを確認します。ログインしていない場合は、ログインページにリダイレクトします。ログインフォームが送信されると(ajax呼び出し)、ユーザーが間違ったユーザー名またはパスワードを入力すると、間違った資格情報を入力したことを示すモーダルでエラーメッセージが表示されます。ユーザー名とパスワードがtrueの場合、インデックスページにリダイレクトされます。しかし、ユーザはログインしたとみなされないので、再びログインページにリダイレクトされます。また、リダイレクトせずにユーザーのIDをエコーし​​ようとしましたが問題なく表示されました。しかし、インデックスページにアクセスした後、再度ログインページにリダイレクトされます。

次のコードを呼び出すとセッションを追加して表示しようとしました。

session()->put('foo', 'bar'); 
echo session()->get('foo'); 

"bar"がページにエコー表示されます。しかし、別のページにセッションをエコーし​​た場合(既にセッションが追加されていないため、新しいセッションを作成する必要はありません)、 "bar"はページにエコーされません。

また、「storage/framework/sessions」フォルダにファイルが保存されていないことにも注意してください。

セッションタイプはファイルであり、有効期間は720です。「cookie」と「database」も試みました。同じ問題が「Cookie」で発生しましたが、データベースドライバを使用して「データベースドライバを使用できません」という例外が発生しました(必要なテーブルを正常に移行しました)。

また、ウェブサイトはlocalhost(Windows 10)にあります。だから、私はフォルダのアクセス許可が問題になるとは思わない。また、私は別のLaravel(古いバージョン - それは5.4でなければならないと思います)を同じPCに持っていて、問題なく動作しています。どちらもPHP 7とnginxサーバーを使用しています。

答えて

0

私は自分の問題を発見しました。カスタムServiceProviderを作成し、カスタムルートを定義してモジュラーシステムを作成しました。ここでルートファイルを「インクルード」しようとしたので、新しいlaravelルーティングシステムがそれをapiルートとして動作させました。そこでセッションは利用できませんでした。

は今、私は自分のコードを変更しました:

Route::middleware('web')->group($route_file); 

とルートがウェブルートやセッションとして振る舞っている働いています。

これは、この問題を抱えている他の人に役立ちます。

0

ファイルconfig/session.phpのセッション構成を確認してください。

セッションドライバがファイルの場合は、storage/sessionフォルダのアクセス許可がchmod -R 777 storageであることを確認してください。

また、そのファイルのlifetimeおよびexpire_on_closeの設定を確認して、要求間のセッションを維持できます。

+1

答えをありがとうが、私はすでに私の質問でこの予防措置について言及しています。 –