• ベストアンサー

CakePHPかPHPでユーザーのアクセス権を管理したい

CakePHPかPHP でユーザーのアクセス権を管理したいです。 例えば、システムにはAAAとBBB二人のユーザーがいると仮定します。 AAAが管理ユーザーで、AAAとBBBの編集画面が違っているとします。 AAAがBBBに対してEditの権を与える可能というような仕組み。 参考できるサイトあるいはソースがありますでしょうか? よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
noname#94983
noname#94983
回答No.1

PHPで一から作ってもいいが、面倒くさいと思う。CakePHPが使えるなら、こっちのほうがい。CakePHPには、adminルーティングというのがある。これは、管理者用のページを作成するための方法で、特定のURLにページを用意しておくことで、そのページの管理者ページを用意できる機能。これはこのへんが参考になる。「cakephp adminルーティング」で検索すれば他にもいろいろある。 http://www.1x1.jp/blog/2006/09/cakephp_admin.html これに、Authで認証を行い、特定の利用者のみがアクセスできるようにすればいいと思う。より高度なアクセス制限をしたければACLを使う必要があるが、単に管理者のアクセスだけを許可するならAuthで十分だろう。これも「cakephp auth」で検索すればたくさん出てくる。 http://book.cakephp.org/ja/view/172/Authentication

その他の回答 (1)

  • mdp36
  • ベストアンサー率72% (26/36)
回答No.2

ソースは見せられませんが、私が最近作ったパターンでは、 ・AppController::beforeFilterでセッションの有無をチェック。あれば権限をグローバル変数に格納、無ければログイン画面にリダイレクト。 ・ログイン画面でユーザ情報と権限をfindしてセッションに格納する。 ・bootstrap.phpに権限の有無を判定する関数を記述する。 ・後はコントローラで画面の表示権限をチェックしたり、ビューで権限の無いメニューの表示を制御したりする。 権限の付与に関しては、権限を設定できる権限(Grant権限?)を用意しておけば、後は通常の編集画面と同様です。 ただ、ログアウトしないと権限が更新されないので、beforeFilterでユーザの更新時間をチェックしても良いと思います。

関連するQ&A

  • CakePHPのsyntaxエラーについて

    お世話になります。 CakePHPでサイト構成をしています。 教本に従ってコードを書いています。 最も簡単なサイトを作るという章で、MyPagesContorllerを作り、Viewにindex.ctpとedit.ctpを作り、ModelにUser.php、 ContollerにUsersController.phpを作りました。 ユーザーの一覧表示まで出来ましたが、編集機能を作るところでつまずいてます。 UsersController.php <?php class UsersController extends AppController { //モデルの指定(users) public $uses = array('User'); //レイアウトの指定(defaultの場合はなくても動作する) public $layout = 'default'; //indexアクション public function index () { $userData = $this->User->find('all'); //Viewにデータを送る $this->set('userData', $userData); } } //editアクション public function edit($id = null) { if($this->request->isPost() || $this->request->isPut()) { if(!empty($this->data)) { if($this->User->save($this->data)) { $this->Session->setFlash('保存しました'); $this->redirect(array('action' => 'index')); return; } } 下記の様なエラーが表示されてしまいます。 Error: syntax error, unexpected 'public' (T_PUBLIC) 本にある通りに記述して、何度も確認しましたが間違いが見つけられません。 写真に添付しているline20の前後を見ても特にミスは無い様に思えます どこが間違っているのでしょうか。。。 ちなみにeditアクションのソースを消すと、エラーは表示されません。 どなたかご教授頂けないでしょうか。 宜しくお願いいたします。

  • 特定のユーザアカウントから設定やアクセスができない

    家庭用のQ&Aで回答がつかないので、こちらに書かせていただきました。  XP Proのある特定のユーザアカウントだけ、設定やアクセスができません。管理者権限を持っているアカウントなのに、ほかのユーザの設定変更ができない、Documents&Settingsの他の人のフォルダが開けない、自らのコントロールパネルの電源設定も「アクセスが拒否されました」と表示されます。  これには伏線があって、以下の操作を以前にしたのです。これが原因ではと思います。どうしたら直るでしょうか。 1.購入後最初のアカウント設定で、AAAという名前で管理者権限のアカウント設定した。 2.システムの復元で、アカウント設定前の状態に戻した。(この時点でC:Documents and Settings\AAAは消えていなかった) 3.再び同じAAAという名前でアカウントを設定した。 4.C:Documents and SettingsのフォルダーにAAAというフォルダーと、AAAに長い文字列のついたフォルダーが生成されていた。(二つもフォルダーがあるのがいやだったので、、) 5.この二つのフォルダーをゴミ箱にいれて消した。 6.再びAdministratorからAAAという名前でユーザアカウントを作った。 このような操作をしてしまいました。 上記のことをしたためだと思いますが、新しいAAAのアカウントでは管理者権限でできるはずのことができません。BBBという新しいアカウントを作れば、これは問題なく操作できます。これはどのような理由によるのでしょう。  AAAを正常な状態に戻すにはどうしたらよいでしょうか。AAAを捨てて他のアカウントをつくれば済むことですが、AAAという名前で作りたいのです。

  • PHPでアクセスログ管理システム

    掲題の通り、PHPでアクセスログを管理(管理画面より閲覧)できるシステムを作ろうと思っています。システムの実現方法に悩んでいます。「こういうのが最も動作が軽い」から「実務でこういうのを作った」「自分が作るならこう作る」までなんでも良いので(ちょっとしたヒント程度のものでもかまいませんので)アイデアをいただけたらありがたいです。 要望は以下のとおりです。 ・管理画面から閲覧ができる(ログファイルを見る必要がない) ・サーバーへの負荷が少ない ・リアルタイムがベスト ※具体的なソースのご提示はなくてもかまいません ※対象サイトの月間PVは3万~5万程度です。 ※「Google Analyticsを使えば良い」はお控えください 当方で考えたシステムは以下の3通りです。 == 1. アクセスログテーブルを作成し、ユーザーからのアクセスするたびにDBにINSERTする 2. テキストファイルに出力をしておいて、アクセスの少ない時間帯にバッチを動かして、テキストからDBにINSERTする 3. テキストファイルに出力して、管理画面でアクセスするたびにテキストを加工し、閲覧できるようにする == どれも、どこかに大きな負荷がかかりそうな気がして、いまいちこれで良いのか、という感じがしています(3万~5万というPVがどの程度のものかがいまいち掴めていない、というのもありますが…) 以上です。よろしくお願いします。

    • 締切済み
    • PHP
  • CakePHPのコントローラの作成

    PHP初心者です。 CakePHPをインストールし試しにTestControlerを作成したのですが、ページが開きません。 PageNotFoundになります。 考えられる原因が分かれば教えて下さい。 【やったこと】 ・ [CakePHP root]\app\Controller に TestController.php を作成。 <?php App::uses('AppController', 'Controller'); class TestController extends AppController { } ・ URLにアクセス http://[CakePHP root]/Test ⇒ Not Found http://[CakePHP root]/test ⇒ Not Found http://[CakePHP root]/app/webroot/index.php?url=test ⇒ CakePHPのindex.phpが表示される。 http://[CakePHP root]/app/webroot/index.php?url=Test ⇒CakePHPのindex.phpが表示される。 以下のサイトを参考にしました。mod_rewriteが動いていない可能性がある ということなので、URL直接指定もしてみましたがダメでした。 http://codezine.jp/article/detail/768?p=2 よろしくお願いします。

    • ベストアンサー
    • PHP
  • XREA : CakePHP(1.2.6)の設置作業で困っています。

    XREA で、 CakePHP(1.2.6)の設置作業をしています。 ディレクトリ: /cakephp/app/config ファイル名: database.php database.phpを修正した所、次のメッセージが表示されました。 ここから、---------- Release Notes for CakePHP 1.2.6. Read the changelog Your tmp directory is writable. The FileEngine is being used for caching. To change the config edit APP/config/core.php Your database configuration file is present. Parse error: syntax error, unexpected T_STRING, expecting ')' in /virtual/アカウント名/cakephp/app/config/database.php on line 88 ----- ココまで。 最後の「Parse error」は、どの様に対処したら良いですか。 database.phpの編集内容は、次の通り。 var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'pass', 'database' => 'user', ''encoding' => 'utf8' 'prefix' => '', 以上、よろしくお願いします。

    • 締切済み
    • PHP
  • PHPの管理者ページのアクセス制限について

    phpで会員制サイトの制作を勉強中です。 pdoでmysqlデータベースに接続しています。 現在、管理者ページの作成を勉強中なのですが、 疑問に思ったことがあります。 IDとパスワードで認証し、 管理者用ページのファイルの内容を表示する仕組みにしたら、 よほど難解なディレクトリ、phpファイル名、ID、パスワードにしないと 認証が通ってしまいそうな気がします。 調べてみると、参考書には管理者ページのパスを .htaccessで特定のIPアドレスにのみアクセス許可を与えるように記述されていました。 管理者用ページのphpファイルへは 難解なディレクトリ、phpファイル名、ID、パスワードにした上で 特定のIPアドレスのみアクセスできるように.htaccessで設定した方が良いでしょうか? そこまで気負う必要はないのでしょうか? 一般的に管理者用ページの認証が どのように作られているか気になります。 ご回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • CAKEPHP:routes.phpの設定方法

    アドレスを短縮したいため、CAKEPHP:routes.phpにて設定を行いました。 ・通常のアドレス   :http://XXXXX.jp/logins/login/ ・短縮したいアドレス :http://XXXXX.jp/i →routes.phpに以下を設定することで、実現できました。  Router::connect('/i', array('controller' => 'logins', 'action' => 'login')); 但し、「logins/login/」は「パラメータを付けても付けなくても」アクセスできる仕組みになっており、 ・通常のアドレス   :http://XXXXX.jp/logins/login/param ・短縮したいアドレス :http://XXXXX.jp/i/param というアクセスも可能にしたいのですが、routes.phpにどのように設定すれば実現できるのでしょうか?

    • ベストアンサー
    • PHP
  • cakePHPで

    cakePHPのビュー部分でHTMLヘルパーを使用し、パラメータを渡すシステムを作成しているのですが、パラメータが渡されず困っています。 ソースは下記のような感じです。 <?php echo $html->selectTag('Data/test',$data['test'],'0',null,null,null); ?> ローカル環境では何の問題も無く、また実際にサーバで動かした際にも、それ以外の箇所は正常に動きましたので原因がわかりません。

    • 締切済み
    • PHP
  • JSから呼ばれた時と直接アクセスの時

    こんにちは、お世話になります。 Javascript(以下js)のsrcにPHPを指定し、HTML内にPHPを埋め込む時、 埋め込まれた場合と直接PHPにアクセスされた場合を判定する方法が判りません。 埋め込む時のソース <script language="JavaScript" type="text/javascript" src="http://example.com/aaa.php?p=1" charset="utf-8"></script> こんな感じですが、cakePHPで書いているので、実際のsrcは http://example.com/aaa/bbb/1 のようになります。 PHP側で出力する時、js形式になるようにしています。 埋め込む時はそのままjsとして実行されますが、 PHPが直接アクセスされた場合は、htmlタグなどが無いため 変な表示になってしまいます。 直接アクセスされた場合はhtmlタグやbodyタグなどを出力させたいのですが、 判定方法はPHPでどのように書いたらよいのでしょうか?

    • ベストアンサー
    • PHP
  • 初期ユーザー名の変更について

    はじめまして、パソコン初心者です。よろしくお願いします。 VISTAのパソコンを新規で購入してセットアップの画面でコンピュータ名?ユーザー名?を「AAA」と登録したのですが、後に思うところがあり「BBB」に変更しようと思いました。 システムのプロパティで変更できそうだったので「BBB」に変更しました。 一見問題なく変更できたようでしたがエクスプローラーのツリーを見ると「AAA」と「BBB」の両方が同じ内容で存在しています。「AAA」をツリーごと削除しようとすると「BBB」を削除して良いですか?とメッセージが出ます。これは怖いので削除しませんでした。 ユーザーアカウントを見ると「BBB」しか見えません。どこかに「AAA」は隠れているのでしょうか?色々操作をしていると「AAA」の名前がたまに出たりします。 実害は無いのですがどうもスッキリしません。どなたか「BBB」に統一する方法を教えてくれないでしょうか。よろしくお願いします。

専門家に質問してみよう