こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

.htaccess でのログアウト

いつもありがとうございます。

perl cgiプログラムを作るうえで、.htaccess でユーザ制限をしています。
ログアウト処理を作ろうと思い、ググったところ以下のような記事がありました。
http://shorindo.com/research/1307411586
(詳細は下記にペースト)
この方法だと、「Realmの部分を設置する環境に合わせて書きかえる必要はある」ということですが、どう書き換えればよいでしょうか?
また、「認証に失敗しました」というのが印象がわるいので、「ログアウトしました」というようなメッセージにしたいのですが、可能でしょうか?

**********************************************************************************

「ApacheのようなCERNやNCSAの流れを汲むWebサーバでは、「nph-」で始まる名前のCGIではそれができるようになっている。これを利用してnph-logout.cgiというプログラムを作る。内容は
#!/usr/bin/perl
print <<EOF;
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic Realm="valid users only"
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD><TITLE>401 Authorization Required</TITLE></HEAD>
<BODY>
<H1>Authorization Required</H1>
</BODY>
</HTML>
EOF

これだけである。Realmの部分を設置する環境に合わせて書きかえる必要はあるが、ログインした状態でこのプログラムにアクセスすると、「認証に失敗しました」というダイアログボックスに続き、ログイン情報の入力ダイアログボックスが表示される。 ここでキャンセルすると、以降はこのURL領域に対しては認証を求められるので、「ログアウト」された状態になっていることがわかる。 」

投稿日時 - 2016-01-18 19:07:36

QNo.9113358

困ってます

質問者が選んだベストアンサー

> 「Realmの部分を設置する環境に合わせて書きかえる必要はある」ということですが、どう書き換えればよいでしょうか?

自身の .htaccessで指定したBASIC認証の設定中の
AuthName で指定した文字列と同じにすればよいです。

> 「ログアウトしました」というようなメッセージにしたいのですが、可能でしょうか?

通常のログイン処理でのログイン失敗と同じ状態をわざと作っているのですから、
この擬似ログアウト処理のときだけ、メッセージを変更することはできないはずです。

もし、ログアウト処理やそのメッセージを綺麗に作りたければ、ログアウト処理ができる認証方法
(CGI上でセッションを使った認証等でHTMLを毎回動的に生成)を使うしかないでしょう。
ただし、これに変更した場合は、
CGI経由で生成されない静的コンテンツ(画像ファイルや固定ファイルのjsやcssファイル)は
認証なしでアクセスできるようになってしまうという弊害が発生してしまいますが。

投稿日時 - 2016-01-20 01:25:09

補足

詳細なご回答ありがとうございます。
「認証に失敗しました」というのは、一般ユーザ向けには やはり見せたくないですね。
静的コンテンツは、ウェブからアクセスできないディクトリに入れてあるので問題ないです。http://www.dab.hi-ho.ne.jp/sasa/biboroku/perl/session.html
なんかを参考に見ていますが、「セッションを使った認証」というのが難しいです。もっと古典的で簡単な、認証・ログアウト方法というのはないでしょうか?

投稿日時 - 2016-01-20 13:27:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-
-広告-
-広告-