For Want Of A Better Word

【Cake】一般用テーブルと、管理用テーブルを分ける場合のログイン(Auth)の使い方・整理

   

まず1つサービス・ログイン機能

これは

①Userテーブル、UserModel、UsersControllerを作成し、

②サービス用のコントローラーを作成

③Authコンポーネントをサービス用のControllerで読み込んで、loginが必要なactionを設定する。

 

これでOK。

 

 

次に管理系

以下のやりくちが考えられる。

 

①一つのログインで、管理ユーザーと一般ユーザーを同一テーブルで権限で分ける。

②二つのログインで、管理ユーザーと一般ユーザーを別テーブルで管理する場合。

個人的には管理ユーザと一般ユーザーは混在させたくないので、②でやりたい。

その場合、

一つのCakeapp、複数のControllerで異なるテーブルで認証というのはcomponentの設定で下記参考でできる。

  • ・管理用コントローラー(Managerテーブル)
  • ・一般サービス用コントローラー(Userテーブル)

コントローラー認証部分

http://liginc.co.jp/programmer/archives/2744

 

でもこれだと、Usersテーブル以外で認証しているだけで、アプリ内ではCookie名が同一となり、別テーブルで認証していても、別の認証も通ることになってしまう。

アプリ側で、Adminルーティングとか設定してあげないといけない。

 

※個人的にはAdminルーティングはなんか嫌。ミスりそうで。

 

なので、別テーブル、別ログイン(Cookie)とするためには、app自体を別々にする必要がある。

その上で、Config/core.phpでCookie名を別にしてあげる。

それがやり方②

こっちのほうが個人的に混在はないし安心。

複数アプリの作成方法は下記を参考にして….

https://www.marineroad.com/staff-blog/3159.html

1Cakeで複数アプリを利用する方法

<前提>
フォルダ構成は下記を想定。
cakeファイルはドキュメントルートに置かないようにもしている。
cakeのバージョンは2.6.11

 

①Cakeを取得し、/var/www/cakeに配置する。

②appsフォルダを作成し、appの中身をapps内に移動。さらにコピーして、publicとmanageフォルダを作成する。

 

③それぞれのアプリフォルダ内に移動し、webrootの中身を公開領域に持っていく。

④移動させたwebrootフォルダ内のindex.phpをいじる。

 

これでそれぞれのアプリに以下のURLでアクセスできる。

・http://test.jp/apps/public/コントローラ名
・http://test.jp/apps/manage/コントローラー名

 

中身のtmpの権限とか、dbconfigの設定とか、security.saltとかはそれぞれ設定。片方やってから、それをコピーしても良い。

 - cake

  関連記事

【Cake】CakePHP_開発はじめる前に_いつも調べなおすことまとめ

Contents1 参考リンク集2 set flashのcssクラスを変更する3 …

[Cake]CakePHPで意識の低いトランザクション commit rollback

cakeで複数のテーブルにまたがったトランザクション管理をしたい。   …

CakePHP コントローラー内でフォーム・モデル名を取得して、ソースをすっきりしたい

こんな感じで自分で設定しちゃうけどいいのかな? こうしないと、ちょっとデフォルト …

CakePHPでjoinしようとしたときのエラー 【Notice (8): Undefined offset: 0 [CORE/Cake/Model/Datasource/DboSource.php, line 1714]】

Cakeでfind()からjoinしようとしたときに下記Noticeが出て、検索 …