Laravel 4.1 では、セッションクッキーの有効期間がデフォルトでは 2 時間になっています。 これをブラウザが閉じたら、クッキーを破棄するようにします。 方法は、app/config/session.phpの設定をかえるだけ。
CSRF TOKENと関わりの深い話題だと思うので[こちら]もどうぞ。 「せや!セッション持続時間を永続化したろ!」「expire_on_close = true!これで放置しても大丈夫やで!」 〜約2時間後〜 SE「消えたンゴ」PG「ワイは消えてない・・・なぜなのか」 という状況の解決策をシェアしたいと思います。 解決策:lifetimeを長めに取ってみて下さい。gc(ガベージコレクション)がセッションデータを削除しているかもしれません。expire_on_closeがtrueならlifetimeは無視されると思いきや・・・ 実はガベージコレクションの判定では使用されています。 LaravelもネイティブPHPも、セッションデータを失う条件は 1.cookieが削除された2.セッション自体の有効期限が切れた3.gcが発動した の3通りが主で、Laravelの場合1と2はexpire_on
はじめに Laravelを触り始めた時、簡単なCRUD機能を持ったToDoアプリを作りました。 その時、データベースに保存したり、削除したりできるような機能を実装していました。 しかし、保存ボタンや削除ボタンを押してもアクションの処理が走るだけで味気ないです。保存できても出来てなくてもリダイレクトしたページを表示するだけです。 そんな味気ないアプリケーション嫌だ!!!!「保存に成功しました」ぐらいのステータスメッセージを表示はしてほしい。。。メッセージがないと成功か失敗かわからないですよね。 しかし、意外とステータスメッセージを自力で実装することはめんどくさいです。その理由を2つあげます。。 保存処理が実行した時にメッセージの内容を設定します。保存処理では最後にリダイレクトすることがほとんどだと思うので、メッセージの内容をリダイレクト先のアクションへ渡します。受け取ったアクションからビュー
くだらない話なんだけどね。 Laravelで、画面から項目を入れてテーブルに登録するって処理のテストをしていて、上手く動かなかった訳さ。phpのエラーが出たりしてね。 いくつか修正してphpのエラーは出なくなったんだけど、今度は419エラーの画面が出続けてしまう。 @csrfはあるし、特に変なところはない。なのに419のエラーが出ている。 ググっても答えが見つからずに途方に暮れていたとき、ある考えが閃いた。 俺って、テストを「戻る」で続けてね? @csrfのトークンの有効期限はデフォルト120分だそうな。 120分過ぎたら、トークンの期限が切れるよね。戻るボタンで戻った画面ではトークン取り直さないもんね。リロードしていないし。 ブラウザ閉じて、改めてurlから入ったら、難なくエラーは消えました。 おいらみたいなぼけなすの助けになれば幸いです。
Laravelの勉強をしている中で、POST通信をするときに「419エラー」が出ました。 原因と対策をメモ代わりにポストしておきます。 LaravelのPOST通信で419エラー ↑ こんなのが出ました。 419エラーとは そもそも「419エラーって何なんだ?」ということで「HTTPステータス」を確認。 あれ? 419が無いぞ。 Wikipediaにも載っていないということで、Laravelの独自エラーコードなんだろう、ということにしておきました(笑) 419エラーの原因 POST通信の際のCSRF(クロスサイトリクエストフォージェリ)対策に失敗しているので出ているエラーで、恐らくほとんどの場合は「CSRFトークン」の記述もれが原因だと思われます。 実際に私が419エラーを出した際もCSRFトークンの書き忘れでした。
Laravel6で認証をユーザーと管理者など複数にわける場合のメモ。 まずは普通にログイン機能を実装 Laravel 6.0 ログイン機能を実装する - Qiita Laravel6.0「make:Auth」が無くなった 〜Laravel6.0でのLogin機能の実装方法〜MyMemo - Qiita 認証 6.x Laravel ここは参考になる記事が多くあるので説明は省略。 作成したログイン機能に追加 新しく管理者(Admin)の認証機能を追加する。 1. モデルクラスを作成 他のモデルクラスと同じようにマイグレーションファイル(DB)とモデルクラス(Admin.php)を作成。 モデルクラスはIlluminate\Database\Eloquent\ModelではなくIlluminate\Foundation\Auth\Userを継承する。
イントロダクションIntroduction HTTP駆動のアプリケーションはステートレスのため、リクエスト間に渡りユーザーに関する情報を保存するセッションが提供されています。Laravelは記述的で統一されたAPIを使えるさまざまなバックエンドのセッションを用意しています。人気のあるMemcachedやRedis、データベースも始めからサポートしています。Since HTTP driven applications are stateless, sessions provide a way to store information about the user across multiple requests. Laravel ships with a variety of session backends that are accessed through an expressive,
概要 LaravelでSession機能を使ってみたので、忘れないようメモを残します。 セッションIDを取得する <?php namespace App\Http\Controllers; use Illuminate\Http\Request, App\Http\Controllers\Controller; class TopController extends Controller { public function index(Request $request) { // セッションIDの再発行 $request->session()->regenerate(); // セッションの値を全て取得 $data = $request->session()->all(); // IDを取得 $id = $request->session()->get('id'); // 名前を取得 (ク
上記のように設定すると、下記のようなログファイルにログが出力される Laravel/storage/logs/laravel-2018-07-25.log ディレクトリ指定してモデルを生成する vagrant@homestead:~/code/Laravel$ php artisan route:list +--------+----------+------------------------+------------------+------------------------------------------------------------------------+------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------
sessionとは Webアプリケーションでは、リクエストをまたがったユーザーの識別やユーザー毎のデータの保存を行う必要が出てきます。 そのために、Laravelのようなフレームワークは、セッションという仕組みを提供しています。 セッションにはデータ(キーと値のペア)を保存できます。 Laravelは様々なバックエンドのセッションを提供しており、config/session.phpで設定できます。 デフォルトで設定されているfileセッションは、storage/framework/sessions/ディレクトリ内のファイルにセッションを保存します。実稼働環境ではdatabaseセッションやredisセッションなどの使用を考慮しますが、開発環境ではデフォルトのfileセッションで十分です。 Laravelでsessionを利用する方法 Laravelでセッションを操作するには、主に2つの方法
イントロダクション HTTP駆動のアプリケーションはステートレスのため、リクエスト間に渡りユーザに関する情報を保存するセッションが提供されています。Laravelは記述的で統一されたAPIを使える様々なバックエンドのセッションを用意しています。人気のあるMemcachedやRedis、データベースも始めからサポートしています。 設定 セッションの設定はconfig/session.phpにあります。このファイルのオプションには詳しくコメントがついていますので確認して下さい。ほとんどのアプリケーションでうまく動作できるように、Laravelはfileセッションドライバをデフォルトとして設定しています。実働環境のアプリケーションではセッションの動作をより早くするために、memcachedやredisドライバの使用を考慮しましょう。 セッションドライバ(driver)はリクエスト毎のセッションデ
概要 異なるサイト間でCookieとSessionを共有してログイン状態を保持する手順を記載します。 片方のサイトでログインすればもう片方もログイン状態になり、片方でログアウトすればもう片方もログアウトするような感じです。 Laravelで以下の条件を満たしていれば、基本的に設定ファイルを編集するだけでできます。 サイト間で認証方式が同じ サイト間でドメインが同じ サイト間で同じデータベースを使用している 今回は、Laravelでデフォルトの認証方式である$ php artisan make:authを両方のプロジェクトで実行したとして話を進めます。 独自の認証だったり他のライブラリ等を利用した場合は、設定に関する変更箇所を適宜見つける必要があります。 Cookie/Sessionとは ステートレス(状態を持たない)であるHTTP通信において、ログイン状態などの状態を保持しておきたいときに
はじめに 1台のマシン上にバーチャルホストで複数のサイトを運用していたとします。 DBは共通で、同じドメインのサブドメインで運用されたLaravelのサイトだったとします。 sample01.example.jp sample02.example.jp ここまでくると、片方でログインしたらもう一方でもログイン状態を維持したい、という要望だって出てくるでしょう。 セッション管理をRedisで行う選択肢が取れる場合、Laravelであれば特別なことは何もせずに達成可能です。 解決方法 クッキーのdomain属性を利用します。 ドメイン名が後方一致する場合のみクッキーを送信する、という条件です。 Laravelであれば設定ファイルのsession.phpか.envファイルにてSESSION_DOMAINを設定する事で利用できます。 SESSION_DRIVER=redis SESSION_LIF
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く