「ユーザー向け」と「運営者向け」の管理画面をPEAR_AUTHで制作し

認証を行っているのですが、「ユーザー向け」の管理画面で認証が完了すると
「運営者向け」の管理画面内も参照できてしまいます。
※もちろん認証の際に用いるデーターベーステーブルは
「ユーザー向け」と「運営者向け」で分けています。

セッションIDを共通のものを使用しているため起こっている現象だと思うのですが、
こういった場合一般的にはどのように解決しているのでしょうか?

なるべくシンプルな方法で解決できると大変嬉しいです。

宜しくお願い致します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/08/01 12:08:30
  • 終了:2009/08/02 22:52:47

ベストアンサー

id:scrap49 No.4

scrap49回答回数18ベストアンサー獲得回数42009/08/02 22:14:22

ポイント50pt

$auth = new Auth("DB", $params,"loginFunction");

$auth->setSessionName('hogehoge');

$auth->setadvancedsecurity('true');

$auth->start();

2行目の記述でセッション名がセットできます。


http://pear.php.net/manual/ja/package.authentication.auth.auth.s...

id:gelgelgel

ありがとうございます。

ズバリ私が求めていた回答です!!

後ほど検証してみます。勉強になりました。

※追記

早速試したところうまくいきました!!ありがとうございました!!

2009/08/02 22:50:40

その他の回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402009/08/01 13:30:10

ポイント30pt

基本的には一般ユーザーと管理ユーザーの認証機構は全く別個に設定するのがセオリーだと思います。

セッションIDを共通のものを使用しているため起こっている現象

セッションID を個別の物にすると言うのも一つの実装例でしょう。


全く別個にするのが無理であれば、権限情報を持たせるという方法が有ります。

データベースに格納された他のカラムの取得 - ユーザー認証(PEAR::Auth) - PEAR入門

PEAR::Auth には他のカラムを取得する機能もあるようなので、たとえば authority というカラムを追加し、

管理者権限が必要なページでは都度このカラムの値が条件を満たしているかチェックするといった具合です。

id:gelgelgel

ご回答ありがとうございます。

>基本的には一般ユーザーと管理ユーザーの認証機構は全く別個に設定するのがセオリーだと思います。

言葉足らずだったのですが私も同一にしたかったわけではなく、

同じソースを使っているのでそうなってしまったのですが、

簡単に別個にセッションIDを保持する設定などがあればと

思っておりました。

>管理者権限が必要なページでは都度このカラムの値が条件を満たしているかチェックするといった具合です。

こうすればできるのは分かっていたのですが、なんだか一般的ではない気がしておりました。

こういったものなんですね。

ありがとうございました。

2009/08/02 14:00:36
id:yofukaci No.2

yofukaci回答回数306ベストアンサー獲得回数102009/08/01 16:49:26

ポイント10pt

http://www.phpbook.jp/pear/pear_auth/index9.html

管理者かユーザーかの情報を持つようにして、それで判断すればよいと思われます。

id:gelgelgel

ありがとうございました。

2009/08/02 14:00:54
id:kn1967a No.3

kn1967a回答回数356ベストアンサー獲得回数72009/08/01 17:12:07

ポイント1pt

セッションIDを分ける。

http://q.hatena.ne.jp/

id:gelgelgel

どうやって分けたらいいのかを教えてほしかったです。

2009/08/02 14:01:16
id:scrap49 No.4

scrap49回答回数18ベストアンサー獲得回数42009/08/02 22:14:22ここでベストアンサー

ポイント50pt

$auth = new Auth("DB", $params,"loginFunction");

$auth->setSessionName('hogehoge');

$auth->setadvancedsecurity('true');

$auth->start();

2行目の記述でセッション名がセットできます。


http://pear.php.net/manual/ja/package.authentication.auth.auth.s...

id:gelgelgel

ありがとうございます。

ズバリ私が求めていた回答です!!

後ほど検証してみます。勉強になりました。

※追記

早速試したところうまくいきました!!ありがとうございました!!

2009/08/02 22:50:40
  • id:b-wind
    >言葉足らずだったのですが私も同一にしたかったわけではなく、
    別に責めるつもりは無いけど。
    >簡単に別個にセッションIDを保持する設定などがあればと
    URL ベースで判別できるなら .htaccess 等で PHP の設定を変更可能。
    管理者しか通らないロジックがあるなら、そこでもコード中で設定変更可能。

    >>管理者権限が必要なページでは都度このカラムの値が条件を満たしているかチェックするといった具合です。
    >こうすればできるのは分かっていたのですが、なんだか一般的ではない気がしておりました。
    よく使われる手ではあるが、チェック漏れのページが一つでもあれば問題になる可能性はある。
    それなりのリスクがある事は覚悟しなければならない。
  • id:gelgelgel
    補足ありがとうございます。

    > >言葉足らずだったのですが私も同一にしたかったわけではなく、
    > 別に責めるつもりは無いけど。

    別に責められたつもりもなく なんとなく書いたのですが、
    余計でしたね・・。

    > >簡単に別個にセッションIDを保持する設定などがあればと
    > URL ベースで判別できるなら .htaccess 等で PHP の設定を変更可能。
    > 管理者しか通らないロジックがあるなら、そこでもコード中で設定変更可能。

    こちらは私には難しそうですね・・

    > >>管理者権限が必要なページでは都度このカラムの値が条件を満たしているかチェックするといった具合です。
    > >こうすればできるのは分かっていたのですが、なんだか一般的ではない気がしておりました。
    > よく使われる手ではあるが、チェック漏れのページが一つでもあれば問題になる可能性はある。
    > それなりのリスクがある事は覚悟しなければならない。

    管理画面のみの共通ファイルを読み込んでいて漏れがある可能性はありませんのでこの方法で解決したいと思います。

    ありがとうございました。

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

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

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

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