認証を行っているのですが、「ユーザー向け」の管理画面で認証が完了すると
「運営者向け」の管理画面内も参照できてしまいます。
※もちろん認証の際に用いるデーターベーステーブルは
「ユーザー向け」と「運営者向け」で分けています。
セッションIDを共通のものを使用しているため起こっている現象だと思うのですが、
こういった場合一般的にはどのように解決しているのでしょうか?
なるべくシンプルな方法で解決できると大変嬉しいです。
宜しくお願い致します。
$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を共通のものを使用しているため起こっている現象
セッションID を個別の物にすると言うのも一つの実装例でしょう。
全く別個にするのが無理であれば、権限情報を持たせるという方法が有ります。
データベースに格納された他のカラムの取得 - ユーザー認証(PEAR::Auth) - PEAR入門
PEAR::Auth には他のカラムを取得する機能もあるようなので、たとえば authority というカラムを追加し、
管理者権限が必要なページでは都度このカラムの値が条件を満たしているかチェックするといった具合です。
ご回答ありがとうございます。
>基本的には一般ユーザーと管理ユーザーの認証機構は全く別個に設定するのがセオリーだと思います。
言葉足らずだったのですが私も同一にしたかったわけではなく、
同じソースを使っているのでそうなってしまったのですが、
簡単に別個にセッションIDを保持する設定などがあればと
思っておりました。
>管理者権限が必要なページでは都度このカラムの値が条件を満たしているかチェックするといった具合です。
こうすればできるのは分かっていたのですが、なんだか一般的ではない気がしておりました。
こういったものなんですね。
ありがとうございました。
ありがとうございました。
$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...
ありがとうございます。
ズバリ私が求めていた回答です!!
後ほど検証してみます。勉強になりました。
※追記
早速試したところうまくいきました!!ありがとうございました!!
ありがとうございます。
ズバリ私が求めていた回答です!!
後ほど検証してみます。勉強になりました。
※追記
早速試したところうまくいきました!!ありがとうございました!!