PHPでの質問です。

Basic認証を使用してサイトにアクセスをした際に
ブラウザを閉じたりするまでは特に再度認証の必要はありませんが
ブラウザを閉じることなくログアウトすることは可能でしょうか?
元々PHPのBasic認証自体がログインという概念ではないと思うのですが
何か付け加えることで再度認証をするように
出来る方法があれば教えていただければと思います。

回答の条件
  • 1人3回まで
  • 登録:2007/01/06 15:57:36
  • 終了:2007/01/08 20:26:29

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/01/06 16:22:47

ポイント27pt

header('HTTP/1.0 401 Unauthorized');

サーバーからコード401を返せばクライアント側で認証関連のキャッシュをクリアするというような方法があるにはあるのですが、、、、

この仕様は強制ではないためブラウザによって対応が違い、特に広く使われているIEなどはコード401を受けてもキャッシュをクリアしてくれないのでブラウザを閉じるしか手はなかったりします。

JAVAScriptなどのクライアントサイドスクリプトで強制的にウィンドウを閉じるといった手法を併用していたりするのはそのためです。

id:quocard

試しに401を返してみましたがやはりダメなようです。

キャッシュをクリアすればいけるのかな・・・。

キャッシュのクリア方法がわからないので

探さないといけないですが・・・。

2007/01/06 21:02:40
id:inokuni No.2

いのくに回答回数1343ベストアンサー獲得回数212007/01/06 17:05:33

ポイント27pt

ユーザ名が不正だったりパスワードが間違っていた時にはサーバが再び401レスポンスコードを返す。このときは、クライアントは再びユーザに再びユーザ名とパスワードの入力をもとめる。

とあるので、

HTTP/1.1 401 Authorization Required

のようにヘッダーレスポンスで401エラーを返せばよろしいかと思います。

id:quocard

試してみました。

回答1でもありましたがこの方法ではダメなようです。

2007/01/06 20:57:15
id:esecua No.3

esecua回答回数510ベストアンサー獲得回数102007/01/07 10:16:57

ポイント26pt

ブラウザを閉じることなくログアウトすることは可能でしょうか?

できません。私の知っている限り。

ユーザ名が不正だったりパスワードが間違っていた時にはサーバが再び401レスポンスコードを返す。このときは、クライアントは再びユーザに再びユーザ名とパスワードの入力をもとめる。

このときって確かブラウザがまだ認証を完了していない時に有効なような気がします。一度認証が成立してしまうとブラウザを閉じるまではブラウザは情報を保持し続けるような気がするのですが。

基本認証でなければならない理由があるのでしょうか?もしなければPHPで認証を行えばログアウトもブラウザを閉じずに可能です。一番手っ取り早いPEARのAuthを使ってみてはいかがでしょうか。

http://pear.php.net/auth

間違っていたらごめんなさい。

id:quocard

ありがとうございます。

pearは知りませんでした。

こちらも参考にしてみたいと思います。

2007/01/08 20:26:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません