プログラミング

Laravelで生成したCookie情報をjQueryで取得する方法【JavaScript】

ajax api JavaScript jQuery Laravel PHP
Laravelで生成したCookie情報をjQueryで取得する方法【JavaScript】

 

今回はLaravel開発備忘録です。

ajaxでapi認証してviewに記述したhtmlデータを取得するために、cookieを使ったapi_tokenの受け渡し手順をまとめてみました。

 

Laravelを使った開発をしている人は、ぜひ参考にしてくださいね。

 

 

Laravel側の処理

 

まずはcookieにデータをセットする必要があります。大きく分けると方法は2つです。

  • ファザードを使った方法
  • メソッドを使った方法

Laravel公式 HTTPリクエスト

 

引数は基本的に同じなので、使用環境や状況に合わせて利用してください。今回はviewを返す際にcookieを付与する例を使って説明するので、メソッドを使った方法をご紹介します。

 

 

responseにcookieの付与

 

cookieのメソッドは以下の通りです。

cookie(‘name’, ‘value’, $minutes, $path, $domain, $secure, $httpOnly)

 

これをviewのメソッドに繋げることで、返却する際にcookie情報をセットすることができます。今回は管理者ホーム画面を想定してユーザー情報に格納されたapi_tokenを返却してみます。

// apiトークンを返却
return response()->view('admin.home')
        ->cookie('api_token', Auth::user()->api_token, 30);

 

名前に「api_token」値に「Auth::user()->api_token」cookieの有効時間を30分としました。実際にjsファイル側でクッキー情報の取得結果を確認してみましょう。

console.log($.cookie("api_token")); // undefined

 

これだけでは取得できませんね。問題はLaravel側にあります。

 

 

cookieの暗号化を解除する

 

Laravelでは生成したcookie情報を暗号化しているため、単純にcookieをセットするだけではLaravel内でしか使用できません。なので、暗号化を解除するための処理を加えます。

app/Http/Middleware/EncryptCookies.php
protected $except = [

        'api_token',

    ];

 

$exceptにcookieの名称を指定しておけば、セットしても暗号化されることはありません。もしEncryptCookies.phpのミドルウェアが有効になっていなければコメントアウトを解除しておきましょう。

app/Http/Kernel.php
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
     'web' => [
          \App\Http\Middleware\EncryptCookies::class,
     ];
];

 

これで暗号化されずにcookieへセットすることができます。jsファイルで取得結果を見てみましょう。 

console.log($.cookie("api_token")); // undefined

 

まだ駄目ですね。実はcookieの引数に問題があります。

jsファイルでcookieを取得するためには、controllerviewに連結させたcookieに第7引数までをセットしなければなりません

// apiトークンを返却
return response()->view('admin.home')
        ->cookie('api_token', Auth::user()->api_token, 30, null, null, false, false);

 

こうすることで、jsでも取得できるcookieをセットすることができます

console.log($.cookie("api_token")); // vqZcNw7SkqhJxrfh*************

 

無事取得することができましたね。これでLaravel側での処理は完了です。

 

 

JavaScript側の処理

 

Laravel側でcookieapi_tokenをセットしたら、次にjs側でセットされたcookie情報を取り出しますapi_tokenのやり取りができれば、ajaxを使ってapi認証ができるため、より動的なアプリケーション開発が行なえるようになります。

SPAであれば、vue.jsなどフレームワークを使った開発が主流ですが、部分的に動的な処理を入れるぐらいであれば、jQueryを使った方が簡易かつ開発時間の短縮にもつながるので便利です。そのためにも、cookieを使ったやり取りは覚えておいて損はありません。

 

 

jquery.cookie.jsの読み込み

 

JavaScriptでもcookieの処理は可能ですが、全cookieを文字列で取得してしまうため加工が面倒です。今回は配列で簡単に受け取ることができるようにjQueryのjquery.cookie.jsというプラグインを使用します。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

 

CDNを使用したくないのであれば、配布サイトでjsファイルをダウンロードしてresourcesに設置してください。 

 

 

cookieの取得

 

Laravelの処理でも少し登場しましたが、セットされたcookieを取得するには以下のように記述します。

$.cookie(name);

 

引数を指定しなければ、セットされているcookie情報すべてを配列で取得します。もし複数データを管理する場合はまとめて取得して、jsファイル内で展開するという方法もあります。

 

今回はapi_tokenにセットしたcookieを取得したいので、nameにはapi_tokenを指定します。 

var api_token = $.cookie("api_token");
console.log(api_token); // vqZcNw7SkqhJxrfh*************

 

 

おまけ

 

laravelapiajaxで接続する例をまとめておきます。  

// ajaxでhtmlのテンプレートを取得
var host = location.protocol + "//" + location.host;
var html = $.ajax({
        type: "GET",
        url: host + "/api/admin/html_template",
        async: false,
        headers: {
                Authorization: "Bearer " + $.cookie("api_token");
        },
        dataType: "html"
}).responseText;

 

こうすれば、viewなどでhtmlパーツを準備してjsファイル内で使用することができます。ajaxdataをもたせれば、Laravel上でリクエストデータとして扱えるので、比較的自由にやり取りができるようになります。

 

cookieを使いたくない人は、metaタグにapi_tokenをセットしてnameidを付与すればjQueryで簡単に取り出せますので、プラグインを使わずにapi_tokenのやり取りも可能です。

 

 

まとめ

 

いかがだったでしょうか。

今回は「Laravelで生成したcookie情報をjQueryで取得する方法」をご紹介しました。

みなさんもWebアプリケーション開発を楽しみましょう。

 

注目の記事

忘れさせる技選択 後編(新しい技を習得) PHPポケモン 56
プログラミング
PHP,PHPポケモン,ポケモン
忘れさせる技選択 後編(新しい技を習得) PHPポケモン 56

新しい技を習得 前編に続き、技習得時の処理分岐を作成していきましょう。今回は「新しい技を習得する」です。 前回は覚えようとしている技を諦めるだけだったので、ポケモンのオブジェクトを書き換える必要がありませんでしたね。ですが、新しく覚えようとしている技を既に覚えている技と置き換える場合は、ポケモ...

ピカチュウから学ぶオブジェクト指向 〜ステータス導入編〜 6
プログラミング
PHP,PHPポケモン,オブジェクト指向,ポケモン
ピカチュウから学ぶオブジェクト指向 〜ステータス導入編〜 6

  PHPをピカチュウ(ポケモン)から学ぶ大人気コーナー、第6回目は「ステータス機能の導入編」です。   前回(第5回)で終了段階でのサンプルコードを公開しているので、もし本記事から始める人はぜひそちらを参考にしてください。    ※お詫び   調べたところによると、ポケモンの経験...

壁技編(リフレクター・ひかりのかべ)PHPポケモン 51
プログラミング
PHP,PHPポケモン,ポケモン
壁技編(リフレクター・ひかりのかべ)PHPポケモン 51

壁技とは 前回実装した「しろいきり」と同じく、初代から実装されたフィールド効果技が存在します。それが「壁技」です。 壁(ポケモンwiki) https://wiki.ポケモン.com/wiki/壁 壁とは、バトルにおける場の状態の一種、およびその場を形成するわざの総称。わざとしては第一世代から存在するが、場の状...

バトルステータス可視化編 PHPポケモン 70
プログラミング
PHP,PHPポケモン,ポケモン
バトルステータス可視化編 PHPポケモン 70

バトルステータスの可視化 現在のポケモンでは、バトルステータスの現状を可視化できるようになっており、どれぐらいのランク補正がかかっているか、フィールドがどういう状態になっているかがわかるようになっています。 初代、第2世代等では確認できなかった内容ではありますが、システムとしては便利な要素でも...

PHPポケモン「技ポイント(PP)編」36
プログラミング
PHP,PHPポケモン,ポケモン
PHPポケモン「技ポイント(PP)編」36

技ポイント(PP)とは ポケモンではそれそれの技に使用回数が定められています。それが技ポイント(PP)と呼ばれているものです。 PP(ポケモンwiki) https://wiki.ポケモン.com/wiki/PP   技のクラスを実装した際に、それぞれにppというプロパティをもたせて回数をセットしています。これが、対象の技...

AIが人類にもたらす驚異!深層学習が与える影響とは
ネットワーク
AI,ディープフェイク,深層学習
AIが人類にもたらす驚異!深層学習が与える影響とは

  海外の記事でAIについて記述した興味深いものが掲載されました。   今回は「AIが人類にもたらす驚異!深層学習が与える影響とは」について、上記サイトを参考にまとめましたのでご紹介します。 ※直訳ではありません、あくまで記事の内容を参考にして自らの考えを記述したものです     AIの驚異と...

命中率補正と交代技編 PHPポケモン 45
プログラミング
PHP,PHPポケモン,ポケモン
命中率補正と交代技編 PHPポケモン 45

命中率補正とは ダメージ計算や行動順判定には補正(ランク)を計算した結果を反映していましたが、命中率補正についてはまだ未実装だったため、今回はこちらを作成していきたいと思います。 まずはwikiを参考に、計算方法を見ていきましょう。 命中(ポケモンwiki) https:// wiki.ポケモン.com/wiki/命中 第...

英語できたらブログで稼げる 【ネオコピペ】
ライティング
ブログ,翻訳,英語
英語できたらブログで稼げる 【ネオコピペ】

  2010年に楽天が社内公用語の英語化を宣言したのは、多くの人が耳にしたことがあるでしょう。 私からすると、「英語ができることは強み」だという考えから、「これからは英語ができないと行きていけないのでは?」と考えを変えさせられるような、そんな出来事でした。   多言語できるデメリットを見つけるのは難...

カテゴリ

SEO対策 イベント デザイン ネットワーク ビジネスモデル フリーランス プログラミング マーケティング ライティング 動画編集 雑記

タグ

5G Adobe AfterEffects AI ajax amazon Animate api artisan atom Automator AWS Bluetooth CSS CVR description EC-CUBE4 ECショップ ESLint Facebook feedly foreach function Google Google AdSense Honeycode htaccess HTML IEEE 802.11ax Illustrator Instagram IoT JavaScript jQuery jQuery UI keyword LAN Laravel Linux MacBook MAMP meta MLM MySQL NoCode note OS OSI参照モデル Paypal Photoshop PHP phpMyAdmin PHPポケモン PremierePro rss SEO SEO対策 Sequel Pro Skype SNS SSH Symfony TCP/IP title Toastr Trait Twig Twitter UCC V系 WAN WebSub Wi-Fi wiki Windows WordPress XAMPP xml Xserver YouTube YouTuber Zoom アーティスト アウトプット アクセス層 アニメーション アフィリエイト イーブイ インターネット インプット エンジニア オブジェクト指向 お金配り クリック単価 クリック数 コミュニケーション能力 コロナ コンサルティング サムネイル システムエンジニア スタートアップ スタイルシート スパム データベース ディープフェイク デザイナー デザイン テレワーク ナンパ ニュース ネットワークモデル ノマドワーク バナー ピカチュウ ビジネス フィード フリーランス ブロガー ブログ プログラマー プログラミング プログラミング学習 プログラミング教育 プロトコル ホームページ制作 ポケモン マークアップ マーケティング メール リモートワーク レンダリング 三井住友 三宮 仕事依頼 児童デイ 児童デイサービス 児童発達支援 公開鍵 初心者 助成金 勉強法 営業 広告 広告収入 必勝マニュアル 放課後等デイサービス 朝活 楽天 深層学習 無線LAN 独立 神戸 福祉 秘密鍵 翻訳 自己啓発 英語 見積書 計算機 読書 起業 迷惑メール 配列 銀の弾丸 集客 雑学力