質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

2603閲覧

【Laravel】LaravelでBasic認証を設定しているのですが、一度認証が成功すると再度ページ更新しても認証が表示されません。

toyamal

総合スコア28

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

2クリップ

投稿2021/07/26 01:35

前提・実現したいこと

LaravelでBasic認証を設定しているのですが、一度認証が成功すると再度ページ更新しても認証が表示されません。
更新毎に認証を表示する設定は可能でしょうか?
ちなみにキャッシュが関係しているのかと思い、キャッシュ削除やシークレットウィンドウで見ましたが、認証成功していると再度認証は表示されませんでした。

下記のページを参考にBasic認証を設定しました。
参考ページ

発生している問題・エラーメッセージ

Basic認証を毎回表示させたい。 ページ更新時等。

app/Http/Middleware/BasicAuthMiddleware.php

<?php namespace App\Http\Middleware; use Closure; class BasicAuthMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { switch (true) { case !isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']): case $_SERVER['PHP_AUTH_USER'] !== 'test': case $_SERVER['PHP_AUTH_PW'] !== 'test': header('WWW-Authenticate: Basic realm="Enter username and password."'); header('Content-Type: text/plain; charset=utf-8'); die('ログインして下さい'); } header('Content-Type: text/html; charset=utf-8'); return $next($request); } }

試したこと

キャッシュが関係しているのかと思い、キャッシュ削除やシークレットウィンドウで見ましたが、認証成功していると再度認証は表示されませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/07/26 02:19

ベーシック認証ってそういうものでは?
yuki84web

2021/07/26 12:34

ブラウザ再起動してますか?
guest

回答2

0

ベストアンサー

ちなみにキャッシュが関係しているのかと思い、キャッシュ削除やシークレットウィンドウで見ましたが、認証成功していると再度認証は表示されませんでした。

はい。キャッシュが関係しています。
リクエストとレスポンスを確認してみると良いですよ。
キャッシュの保存場所はブラウザによって違っているので、使用しているブラウザの仕様を調べてみると良いです。

LaravelでBasic認証を設定しているのですが、一度認証が成功すると再度ページ更新しても認証が表示されません。

そういう仕様です。という回答になるかと思いますが、私も過去に「認証はずしてーなー」と思って調べたことがありましたw
結論から言うと、Basic 認証に仕様にのっとり一度認証に失敗すればよいです。
Basic認証で強制ログアウトさせて、再認証プロンプトを表示させる - qiita

開発中で任意のタイミングでログアウト(?)させたいという事であれば
https://user_name:password@example.com
のようなブックマークを作っておくと便利です。

投稿2021/07/26 19:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/07/27 04:41

なるほど!そんな手が。
退会済みユーザー

退会済みユーザー

2021/07/27 08:12 編集

発想の転換ですよね。 私も記事を発見した時、こんなのよく気が付くなぁと感心しました。
guest

0

更新毎に認証を表示する設定は可能でしょうか?

不可能です。
ブラウザを起動している限り、認証済みの状態なので、ブラウザを終了させるしか無いです。

開発時のテスト用だという前提で無理矢理考えると、今、https://example.com/20210706215500/というURLの下にサイトを作ったとして、そのURLに認証を掛け、更新後のサイトのURLをhttps://example.com/20210706215501/にしてまたそのURLに認証を掛けるなどすれば、可能です。
つまり、大元のディレクトリ名をその都度リネームする。

投稿2021/07/26 13:00

otn

総合スコア84507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問